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] Propagate delegate loads during inlining #783
Comments
Top method regressions469 (29.57 % of base) - System.Net.FtpControlStream:QueueOrCreateDataConection(System.Net.CommandStream+PipelineEntry,System.Net.ResponseDescription,byref):int:this ; Assembly listing for method System.Net.FtpControlStream:QueueOrCreateDataConection(System.Net.CommandStream+PipelineEntry,System.Net.ResponseDescription,byref):int: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; 18 single block inlinees; 10 inlinees without PGO data
+; 0 inlinees with PGO data; 34 single block inlinees; 20 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 28, 15 ) ref -> rbx this class-hnd single-def <System.Net.FtpControlStream>
-; V01 arg1 [V01,T03] ( 3, 2.50) ref -> rsi class-hnd single-def <System.Net.CommandStream+PipelineEntry>
-; V02 arg2 [V02,T01] ( 6, 4 ) ref -> r15 class-hnd single-def <System.Net.ResponseDescription>
-; V03 arg3 [V03,T02] ( 5, 4 ) byref -> r14 single-def
-;* V04 loc0 [V04,T44] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc1 [V05,T24] ( 3, 1.50) int -> r13
-; V06 loc2 [V06,T25] ( 4, 2 ) int -> r14
+; V01 arg1 [V01,T07] ( 3, 2.50) ref -> rsi class-hnd single-def <System.Net.CommandStream+PipelineEntry>
+; V02 arg2 [V02,T03] ( 6, 4 ) ref -> r15 class-hnd single-def <System.Net.ResponseDescription>
+; V03 arg3 [V03,T04] ( 5, 4 ) byref -> r14 single-def
+;* V04 loc0 [V04,T52] ( 0, 0 ) ubyte -> zero-ref
+; V05 loc1 [V05,T32] ( 3, 1.50) int -> r13
+; V06 loc2 [V06,T33] ( 4, 2 ) int -> r14
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Net.IPEndPoint>
-; V08 loc4 [V08,T36] ( 3, 1.50) ref -> r15 class-hnd single-def <System.Net.IPEndPoint>
-; V09 loc5 [V09,T43] ( 3, 0.50) ref -> [rbp-0x30] class-hnd EH-live single-def <System.Net.Sockets.Socket>
+; V08 loc4 [V08,T42] ( 3, 1.50) ref -> r15 class-hnd single-def <System.Net.IPEndPoint>
+; V09 loc5 [V09,T51] ( 3, 0.50) ref -> [rbp-0x30] class-hnd EH-live single-def <System.Net.Sockets.Socket>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Net.IPAddress>
-; V12 tmp2 [V12,T46] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Net.WebException>
-; V13 tmp3 [V13,T04] ( 4, 4 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Net.IPEndPoint>
-; V14 tmp4 [V14,T10] ( 3, 3 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Net.IPEndPoint>
+; V12 tmp2 [V12,T54] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Net.WebException>
+; V13 tmp3 [V13,T08] ( 4, 4 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Net.IPEndPoint>
+; V14 tmp4 [V14,T18] ( 3, 3 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Net.IPEndPoint>
;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.ObjectDisposedException>
-; V16 tmp6 [V16,T11] ( 3, 3 ) ref -> r14 class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-; V17 tmp7 [V17,T26] ( 2, 2 ) ref -> rdi class-hnd exact single-def "impImportAndPushBox" <System.String>
+; V16 tmp6 [V16,T19] ( 3, 3 ) ref -> r14 class-hnd exact single-def "Single-def Box Helper" <System.Int32>
+; V17 tmp7 [V17,T34] ( 2, 2 ) ref -> rdi class-hnd exact single-def "impImportAndPushBox" <System.String>
;* V18 tmp8 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V19 tmp9 [V19,T08] ( 5, 3 ) ref -> rax single-def "spilling varStr"
+; V19 tmp9 [V19,T16] ( 5, 3 ) ref -> rax single-def "spilling varStr"
;* V20 tmp10 [V20 ] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V22 tmp12 [V22,T09] ( 5, 3 ) ref -> rax single-def "spilling varStr"
+; V22 tmp12 [V22,T17] ( 5, 3 ) ref -> rax single-def "spilling varStr"
;* V23 tmp13 [V23 ] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-;* V24 tmp14 [V24,T45] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V24 tmp14 [V24,T53] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V25 tmp15 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V26 tmp16 [V26,T20] ( 4, 2.75) ref -> rdi single-def "spilling varStr"
+; V26 tmp16 [V26,T28] ( 4, 2.75) ref -> rdi single-def "spilling varStr"
;* V27 tmp17 [V27 ] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V28 tmp18 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.Sockets.NetworkStream>
;* V29 tmp19 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.Sockets.NetworkStream>
-; V30 tmp20 [V30,T27] ( 2, 2 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Net.IPEndPoint>
-; V31 tmp21 [V31,T12] ( 3, 3 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Net.IPAddress>
+; V30 tmp20 [V30,T35] ( 2, 2 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Net.IPEndPoint>
+; V31 tmp21 [V31,T20] ( 3, 3 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Net.IPAddress>
;* V32 tmp22 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.ArgumentOutOfRangeException>
;* V33 tmp23 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V34 tmp24 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource>
-; V35 tmp25 [V35,T13] ( 3, 3 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <System.Net.NetEventSource>
-; V36 tmp26 [V36,T28] ( 2, 2 ) ref -> r13 class-hnd exact single-def "non-inline candidate call" <System.String>
+; V35 tmp25 [V35,T21] ( 3, 3 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <System.Net.NetEventSource>
+; V36 tmp26 [V36,T36] ( 2, 2 ) ref -> r13 class-hnd exact single-def "non-inline candidate call" <System.String>
;* V37 tmp27 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String>
;* V38 tmp28 [V38 ] ( 0, 0 ) ref -> zero-ref single-def
;* V39 tmp29 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp30 [V40 ] ( 0, 0 ) ref -> zero-ref single-def
;* V41 tmp31 [V41 ] ( 0, 0 ) ref -> zero-ref single-def
-; V42 tmp32 [V42,T29] ( 2, 2 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.String>
-; V43 tmp33 [V43,T14] ( 3, 3 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Net.Sockets.Socket>
-;* V44 tmp34 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.AsyncCallback>
-; V45 tmp35 [V45,T15] ( 3, 3 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
-;* V46 tmp36 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.AsyncCallback>
-; V47 tmp37 [V47,T30] ( 2, 2 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult>
-;* V48 tmp38 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource>
-; V49 tmp39 [V49,T16] ( 3, 3 ) ref -> r13 class-hnd exact single-def "impAppendStmt" <System.Net.NetEventSource>
-; V50 tmp40 [V50,T31] ( 2, 2 ) ref -> r15 class-hnd exact single-def "non-inline candidate call" <System.String>
-;* V51 tmp41 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String>
+; V42 tmp32 [V42,T37] ( 2, 2 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.String>
+; V43 tmp33 [V43,T22] ( 3, 3 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Net.Sockets.Socket>
+; V44 tmp34 [V44,T09] ( 4, 4 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V45 tmp35 [V45,T01] ( 8, 8 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult>
+;* V46 tmp36 [V46 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable>
+;* V47 tmp37 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter>
+; V48 tmp38 [V48,T05] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Action>
+;* V49 tmp39 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V50 tmp40 [V50,T10] ( 4, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+;* V51 tmp41 [V51 ] ( 0, 0 ) ref -> zero-ref
;* V52 tmp42 [V52 ] ( 0, 0 ) ref -> zero-ref single-def
;* V53 tmp43 [V53 ] ( 0, 0 ) int -> zero-ref
-;* V54 tmp44 [V54 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V55 tmp45 [V55 ] ( 0, 0 ) ref -> zero-ref single-def
-; V56 tmp46 [V56,T32] ( 2, 2 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.String>
-; V57 tmp47 [V57,T17] ( 3, 3 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Net.Sockets.Socket>
-;* V58 tmp48 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.AsyncCallback>
-; V59 tmp49 [V59,T18] ( 3, 3 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.Net.Sockets.Socket]>
-;* V60 tmp50 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.AsyncCallback>
-; V61 tmp51 [V61,T33] ( 2, 2 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult>
-;* V62 tmp52 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.IPEndPoint>
-; V63 tmp53 [V63,T21] ( 3, 2.25) ref -> rax single-def "argument with side effect"
-; V64 tmp54 [V64,T34] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V65 tmp55 [V65,T22] ( 3, 2.25) ref -> rax single-def "argument with side effect"
-; V66 tmp56 [V66,T19] ( 3, 3 ) ref -> r15 single-def "argument with side effect"
-; V67 tmp57 [V67,T35] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V68 tmp58 [V68,T47] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V69 PSPSym [V69,T41] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
-; V70 cse0 [V70,T07] ( 6, 3 ) ref -> r13 multi-def "CSE #17: moderate"
-; V71 cse1 [V71,T42] ( 5, 0.62) long -> rax multi-def "CSE #06: conservative"
-; V72 cse2 [V72,T23] ( 4, 2 ) ref -> rdi "CSE #01: moderate"
-; V73 cse3 [V73,T38] ( 3, 1.50) int -> rcx "CSE #07: conservative"
-; V74 cse4 [V74,T37] ( 3, 1.50) ref -> r15 "CSE #12: conservative"
-; V75 rat0 [V75,T05] ( 5, 3.75) ref -> r15 "replacement local"
-; V76 rat1 [V76,T39] ( 3, 1.25) long -> rdi "CSE for expectedClsNode"
-; V77 rat2 [V77,T06] ( 5, 3.75) ref -> rcx "replacement local"
-; V78 rat3 [V78,T40] ( 3, 1.25) long -> rdi "CSE for expectedClsNode"
+;* V54 tmp44 [V54 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable>
+;* V55 tmp45 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter>
+; V56 tmp46 [V56,T23] ( 3, 3 ) ref -> r15 class-hnd "Inlining Arg" <System.Action>
+;* V57 tmp47 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+;* V58 tmp48 [V58,T47] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V59 tmp49 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
+;* V60 tmp50 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource>
+; V61 tmp51 [V61,T24] ( 3, 3 ) ref -> r13 class-hnd exact single-def "impAppendStmt" <System.Net.NetEventSource>
+; V62 tmp52 [V62,T38] ( 2, 2 ) ref -> r15 class-hnd exact single-def "non-inline candidate call" <System.String>
+;* V63 tmp53 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String>
+;* V64 tmp54 [V64 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V65 tmp55 [V65 ] ( 0, 0 ) int -> zero-ref
+;* V66 tmp56 [V66 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V67 tmp57 [V67 ] ( 0, 0 ) ref -> zero-ref single-def
+; V68 tmp58 [V68,T39] ( 2, 2 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.String>
+; V69 tmp59 [V69,T25] ( 3, 3 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Net.Sockets.Socket>
+; V70 tmp60 [V70,T11] ( 4, 4 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.Net.Sockets.Socket]>
+; V71 tmp61 [V71,T02] ( 8, 8 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult>
+;* V72 tmp62 [V72 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable>
+;* V73 tmp63 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter>
+; V74 tmp64 [V74,T06] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Action>
+;* V75 tmp65 [V75 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V76 tmp66 [V76,T12] ( 4, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+;* V77 tmp67 [V77 ] ( 0, 0 ) ref -> zero-ref
+;* V78 tmp68 [V78 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V79 tmp69 [V79 ] ( 0, 0 ) int -> zero-ref
+;* V80 tmp70 [V80 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable>
+;* V81 tmp71 [V81 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter>
+; V82 tmp72 [V82,T26] ( 3, 3 ) ref -> r15 class-hnd "Inlining Arg" <System.Action>
+;* V83 tmp73 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+;* V84 tmp74 [V84,T48] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V85 tmp75 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
+;* V86 tmp76 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.IPEndPoint>
+;* V87 tmp77 [V87 ] ( 0, 0 ) ref -> zero-ref single-def "field V47.m_task (fldOffset=0x0)" P-INDEP
+;* V88 tmp78 [V88 ] ( 0, 0 ) int -> zero-ref "field V47.m_options (fldOffset=0x8)" P-INDEP
+;* V89 tmp79 [V89 ] ( 0, 0 ) ref -> zero-ref single-def "field V55.m_task (fldOffset=0x0)" P-INDEP
+;* V90 tmp80 [V90 ] ( 0, 0 ) int -> zero-ref "field V55.m_options (fldOffset=0x8)" P-INDEP
+;* V91 tmp81 [V91 ] ( 0, 0 ) ref -> zero-ref single-def "field V73.m_task (fldOffset=0x0)" P-INDEP
+;* V92 tmp82 [V92 ] ( 0, 0 ) int -> zero-ref "field V73.m_options (fldOffset=0x8)" P-INDEP
+;* V93 tmp83 [V93 ] ( 0, 0 ) ref -> zero-ref single-def "field V81.m_task (fldOffset=0x0)" P-INDEP
+;* V94 tmp84 [V94 ] ( 0, 0 ) int -> zero-ref "field V81.m_options (fldOffset=0x8)" P-INDEP
+; V95 tmp85 [V95,T29] ( 3, 2.25) ref -> rax single-def "argument with side effect"
+; V96 tmp86 [V96,T40] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V97 tmp87 [V97,T30] ( 3, 2.25) ref -> rax single-def "argument with side effect"
+; V98 tmp88 [V98,T27] ( 3, 3 ) ref -> r15 single-def "argument with side effect"
+; V99 tmp89 [V99,T41] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V100 tmp90 [V100,T55] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V101 PSPSym [V101,T49] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
+; V102 cse0 [V102,T15] ( 6, 3 ) ref -> r13 multi-def "CSE #17: moderate"
+; V103 cse1 [V103,T50] ( 5, 0.62) long -> rax multi-def "CSE #06: conservative"
+; V104 cse2 [V104,T31] ( 4, 2 ) ref -> rdi "CSE #01: conservative"
+; V105 cse3 [V105,T44] ( 3, 1.50) int -> rcx "CSE #07: conservative"
+; V106 cse4 [V106,T43] ( 3, 1.50) ref -> r15 "CSE #12: conservative"
+; V107 rat0 [V107,T13] ( 5, 3.75) ref -> r15 "replacement local"
+; V108 rat1 [V108,T45] ( 3, 1.25) long -> rdi "CSE for expectedClsNode"
+; V109 rat2 [V109,T14] ( 5, 3.75) ref -> rcx "replacement local"
+; V110 rat3 [V110,T46] ( 3, 1.25) long -> rdi "CSE for expectedClsNode"
;
; Lcl frame size = 24
G_M46174_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 24
lea rbp, [rsp+0x40]
mov qword ptr [rbp-0x40], rsp
mov rbx, rdi
mov r15, rdx
mov r14, rcx
;; size=32 bbWeight=1 PerfScore 8.50
G_M46174_IG02:
mov byte ptr [r14], 0
cmp byte ptr [rbx+0x61], 0
- jne G_M46174_IG30
+ jne G_M46174_IG38
;; size=14 bbWeight=1 PerfScore 5.00
G_M46174_IG03:
mov byte ptr [rbx+0x61], 1
mov rdi, gword ptr [rsi+0x08]
mov rax, rdi
test rax, rax
je SHORT G_M46174_IG06
;; size=16 bbWeight=0.50 PerfScore 2.25
G_M46174_IG04:
cmp dword ptr [rax+0x08], 6
jne SHORT G_M46174_IG06
;; size=6 bbWeight=0.25 PerfScore 1.00
G_M46174_IG05:
mov rcx, 0xD1FFAB1E
xor rcx, qword ptr [rax+0x0C]
mov eax, dword ptr [rax+0x14]
xor eax, 0xD1FFAB1E
or rcx, rax
je SHORT G_M46174_IG09
;; size=27 bbWeight=0.12 PerfScore 0.84
G_M46174_IG06:
mov rax, rdi
test rax, rax
je G_M46174_IG19
;; size=12 bbWeight=0.50 PerfScore 0.75
G_M46174_IG07:
cmp dword ptr [rax+0x08], 6
jne G_M46174_IG19
;; size=10 bbWeight=0.25 PerfScore 1.00
G_M46174_IG08:
mov rcx, 0xD1FFAB1E
xor rcx, qword ptr [rax+0x0C]
mov eax, dword ptr [rax+0x14]
xor eax, 0xD1FFAB1E
or rcx, rax
jne G_M46174_IG19
;; size=31 bbWeight=0.12 PerfScore 0.84
G_M46174_IG09:
mov ecx, dword ptr [r15+0x20]
cmp ecx, 200
- jl G_M46174_IG28
+ jl G_M46174_IG36
cmp ecx, 299
- jg G_M46174_IG28
+ jg G_M46174_IG36
test rdi, rdi
je SHORT G_M46174_IG12
;; size=33 bbWeight=0.50 PerfScore 2.88
G_M46174_IG10:
cmp dword ptr [rdi+0x08], 6
jne SHORT G_M46174_IG12
;; size=6 bbWeight=0.25 PerfScore 1.00
G_M46174_IG11:
mov rcx, 0xD1FFAB1E
xor rcx, qword ptr [rdi+0x0C]
or rax, rcx
je SHORT G_M46174_IG13
;; size=19 bbWeight=0.12 PerfScore 0.56
G_M46174_IG12:
mov rdi, gword ptr [r15+0x08]
mov rax, 0xD1FFAB1E ; code for System.Net.FtpControlStream:GetPortV6(System.String):int
call [rax]System.Net.FtpControlStream:GetPortV6(System.String):int
mov r13d, eax
jmp SHORT G_M46174_IG14
;; size=21 bbWeight=0.50 PerfScore 3.75
G_M46174_IG13:
mov rdi, gword ptr [r15+0x08]
mov rax, 0xD1FFAB1E ; code for System.Net.FtpControlStream:GetPortV4(System.String):int
call [rax]System.Net.FtpControlStream:GetPortV4(System.String):int
mov r13d, eax
;; size=19 bbWeight=0.50 PerfScore 2.75
G_M46174_IG14:
mov rdi, gword ptr [rbx+0x10]
mov rdi, gword ptr [rdi+0x10]
mov rax, 0xD1FFAB1E ; code for System.Net.FtpControlStream:CreateFtpDataSocket(System.Net.Sockets.Socket):System.Net.Sockets.Socket
call [rax]System.Net.FtpControlStream:CreateFtpDataSocket(System.Net.Sockets.Socket):System.Net.Sockets.Socket
lea rdi, bword ptr [rbx+0x68]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
nop
;; size=33 bbWeight=0.50 PerfScore 4.62
G_M46174_IG15:
mov rdi, gword ptr [rbx+0x10]
mov rdi, gword ptr [rdi+0x10]
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:get_LocalEndPoint():System.Net.EndPoint:this
cmp dword ptr [rdi], edi
call [rax]System.Net.Sockets.Socket:get_LocalEndPoint():System.Net.EndPoint:this
mov r15, rax
test r15, r15
je SHORT G_M46174_IG18
;; size=30 bbWeight=0.50 PerfScore 5.88
G_M46174_IG16:
mov rdi, 0xD1FFAB1E ; System.Net.IPEndPoint
cmp qword ptr [r15], rdi
je SHORT G_M46174_IG18
;; size=15 bbWeight=0.25 PerfScore 1.06
G_M46174_IG17:
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
call [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
mov r15, rax
;; size=18 bbWeight=0.12 PerfScore 0.47
G_M46174_IG18:
mov rdi, 0xD1FFAB1E ; System.Net.IPEndPoint
call CORINFO_HELP_NEWSFAST
mov r12, rax
mov rsi, gword ptr [r15+0x08]
test rsi, rsi
- je G_M46174_IG43
+ je G_M46174_IG53
xor edi, edi
mov dword ptr [r12+0x10], edi
lea rdi, bword ptr [r12+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, gword ptr [rbx+0x68]
mov rsi, r12
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:Bind(System.Net.EndPoint):this
cmp dword ptr [rdi], edi
call [rax]System.Net.Sockets.Socket:Bind(System.Net.EndPoint):this
mov rdi, 0xD1FFAB1E ; System.Net.IPEndPoint
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Net.NetworkStreamWrapper:get_ServerAddress():System.Net.IPAddress:this
call [rax]System.Net.NetworkStreamWrapper:get_ServerAddress():System.Net.IPAddress:this
mov rsi, rax
mov rdi, r15
mov edx, r13d
mov rax, 0xD1FFAB1E ; code for System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this
call [rax]System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this
lea rdi, bword ptr [rbx+0x78]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
;; size=135 bbWeight=0.50 PerfScore 13.38
G_M46174_IG19:
mov r15, gword ptr [rbx+0x78]
test r15, r15
- jne G_M46174_IG22
+ jne G_M46174_IG26
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M46174_IG40
+ je G_M46174_IG48
;; size=32 bbWeight=0.50 PerfScore 3.75
G_M46174_IG20:
mov rdi, 0xD1FFAB1E ; data for System.Net.NetEventSource:Log
mov r13, gword ptr [rdi]
cmp byte ptr [r13+0x9D], 0
je SHORT G_M46174_IG21
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Net.NetEventSource:IdOf(System.Object):System.String
call [rax]System.Net.NetEventSource:IdOf(System.Object):System.String
mov r15, rax
mov rdi, 0xD1FFAB1E ; 'starting Accept()'
mov rax, 0xD1FFAB1E ; code for System.Net.NetEventSource:Format(System.Object):System.String
call [rax]System.Net.NetEventSource:Format(System.Object):System.String
mov r8, rax
cmp byte ptr [r13], r13b
mov rdi, r13
mov rdx, r15
mov esi, 1
mov rcx, 0xD1FFAB1E ; 'QueueOrCreateDataConection'
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=103 bbWeight=0.50 PerfScore 10.50
G_M46174_IG21:
cmp byte ptr [rbx+0x5D], 0
- je G_M46174_IG38
+ je G_M46174_IG46
mov rdi, gword ptr [rbx+0x68]
cmp byte ptr [rdi], dil
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:AcceptAsync():System.Threading.Tasks.Task`1[System.Net.Sockets.Socket]:this
call [rax]System.Net.Sockets.Socket:AcceptAsync():System.Threading.Tasks.Task`1[System.Net.Sockets.Socket]:this
mov r14, rax
test r14, r14
- je G_M46174_IG42
+ je G_M46174_IG52
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult
call CORINFO_HELP_NEWSFAST
- mov rdi, rax
- mov rcx, 0xD1FFAB1E ; const ptr
- mov rcx, gword ptr [rcx]
+ mov r15, rax
+ lea rdi, bword ptr [r15+0x08]
mov rsi, r14
- mov rdx, rbx
- mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult:.ctor(System.Threading.Tasks.Task,System.Object,System.AsyncCallback):this
- call [rax]System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult:.ctor(System.Threading.Tasks.Task,System.Object,System.AsyncCallback):this
- jmp G_M46174_IG25
- ;; size=95 bbWeight=0.50 PerfScore 11.62
+ call CORINFO_HELP_ASSIGN_REF
+ lea rdi, bword ptr [r15+0x18]
+ mov rsi, rbx
+ call CORINFO_HELP_ASSIGN_REF
+ test dword ptr [r14+0x34], 0xD1FFAB1E
+ jne G_M46174_IG25
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rdi]
+ lea rdi, bword ptr [r15+0x10]
+ call CORINFO_HELP_ASSIGN_REF
+ mov rbx, gword ptr [r15+0x08]
+ cmp byte ptr [rbx], bl
+ mov rdi, 0xD1FFAB1E ; System.Action
+ call CORINFO_HELP_NEWSFAST
+ mov r14, rax
+ lea rdi, bword ptr [r14+0x08]
+ mov rsi, r15
+ call CORINFO_HELP_ASSIGN_REF
+ mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult:<.ctor>b__2_0():this
+ mov qword ptr [r14+0x18], rdi
+ mov r15, r14
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M46174_IG49
+ ;; size=191 bbWeight=0.50 PerfScore 20.25
G_M46174_IG22:
+ mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.TplEventSource:Log
+ mov rdi, gword ptr [rdi]
+ cmp byte ptr [rdi+0x9D], 0
+ jne SHORT G_M46174_IG23
+ mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task:s_asyncDebuggingEnabled
+ cmp byte ptr [rdi], 0
+ je SHORT G_M46174_IG24
+ ;; size=37 bbWeight=0.50 PerfScore 5.25
+G_M46174_IG23:
+ mov rdi, rbx
+ mov rsi, r14
+ mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.TaskAwaiter:OutputWaitEtwEvents(System.Threading.Tasks.Task,System.Action):System.Action
+ call [rax]System.Runtime.CompilerServices.TaskAwaiter:OutputWaitEtwEvents(System.Threading.Tasks.Task,System.Action):System.Action
+ mov r15, rax
+ ;; size=21 bbWeight=0.50 PerfScore 2.00
+G_M46174_IG24:
+ mov rdi, rbx
+ mov rsi, r15
+ xor edx, edx
+ mov ecx, 1
+ mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:SetContinuationForAwait(System.Action,ubyte,ubyte):this
+ call [rax]System.Threading.Tasks.Task:SetContinuationForAwait(System.Action,ubyte,ubyte):this
+ jmp G_M46174_IG33
+ ;; size=30 bbWeight=0.50 PerfScore 3.12
+G_M46174_IG25:
+ mov byte ptr [r15+0x20], 1
+ mov rdi, r15
+ mov rax, 0xD1FFAB1E ; code for System.Net.FtpControlStream:AcceptCallback(System.IAsyncResult)
+ call [rax]System.Net.FtpControlStream:AcceptCallback(System.IAsyncResult)
+ jmp G_M46174_IG33
+ ;; size=25 bbWeight=0.50 PerfScore 3.25
+G_M46174_IG26:
xor rdi, rdi
mov gword ptr [rbx+0x78], rdi
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M46174_IG41
+ je G_M46174_IG50
;; size=25 bbWeight=0.50 PerfScore 2.75
-G_M46174_IG23:
+G_M46174_IG27:
mov rdi, 0xD1FFAB1E ; data for System.Net.NetEventSource:Log
mov r13, gword ptr [rdi]
cmp byte ptr [r13+0x9D], 0
- je SHORT G_M46174_IG24
+ je SHORT G_M46174_IG28
mov r14, r13
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Net.NetEventSource:IdOf(System.Object):System.String
call [rax]System.Net.NetEventSource:IdOf(System.Object):System.String
mov r13, rax
mov rdi, 0xD1FFAB1E ; 'starting Connect()'
mov rax, 0xD1FFAB1E ; code for System.Net.NetEventSource:Format(System.Object):System.String
call [rax]System.Net.NetEventSource:Format(System.Object):System.String
mov r8, rax
cmp byte ptr [r14], r14b
mov rdi, r14
mov rdx, r13
mov esi, 1
mov rcx, 0xD1FFAB1E ; 'QueueOrCreateDataConection'
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=105 bbWeight=0.50 PerfScore 10.62
-G_M46174_IG24:
+G_M46174_IG28:
cmp byte ptr [rbx+0x5D], 0
- je G_M46174_IG39
+ je G_M46174_IG47
mov rdi, gword ptr [rbx+0x68]
cmp byte ptr [rdi], dil
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:ConnectAsync(System.Net.EndPoint):System.Threading.Tasks.Task:this
call [rax]System.Net.Sockets.Socket:ConnectAsync(System.Net.EndPoint):System.Threading.Tasks.Task:this
mov r14, rax
test r14, r14
- je G_M46174_IG42
+ je G_M46174_IG52
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult
call CORINFO_HELP_NEWSFAST
- mov rdi, rax
- mov rcx, 0xD1FFAB1E ; const ptr
- mov rcx, gword ptr [rcx]
+ mov r15, rax
+ lea rdi, bword ptr [r15+0x08]
mov rsi, r14
- mov rdx, rbx
- mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult:.ctor(System.Threading.Tasks.Task,System.Object,System.AsyncCallback):this
- call [rax]System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult:.ctor(System.Threading.Tasks.Task,System.Object,System.AsyncCallback):this
- ;; size=93 bbWeight=0.50 PerfScore 10.75
-G_M46174_IG25:
+ call CORINFO_HELP_ASSIGN_REF
+ lea rdi, bword ptr [r15+0x18]
+ mov rsi, rbx
+ call CORINFO_HELP_ASSIGN_REF
+ test dword ptr [r14+0x34], 0xD1FFAB1E
+ jne G_M46174_IG32
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rdi]
+ lea rdi, bword ptr [r15+0x10]
+ call CORINFO_HELP_ASSIGN_REF
+ mov rbx, gword ptr [r15+0x08]
+ cmp byte ptr [rbx], bl
+ mov rdi, 0xD1FFAB1E ; System.Action
+ call CORINFO_HELP_NEWSFAST
+ mov r14, rax
+ lea rdi, bword ptr [r14+0x08]
+ mov rsi, r15
+ call CORINFO_HELP_ASSIGN_REF
+ mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult:<.ctor>b__2_0():this
+ mov qword ptr [r14+0x18], rdi
+ mov r15, r14
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M46174_IG51
+ ;; size=194 bbWeight=0.50 PerfScore 20.38
+G_M46174_IG29:
+ mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.TplEventSource:Log
+ mov rdi, gword ptr [rdi]
+ cmp byte ptr [rdi+0x9D], 0
+ jne SHORT G_M46174_IG30
+ mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task:s_asyncDebuggingEnabled
+ cmp byte ptr [rdi], 0
+ je SHORT G_M46174_IG31
+ ;; size=37 bbWeight=0.50 PerfScore 5.25
+G_M46174_IG30:
+ mov rdi, rbx
+ mov rsi, r14
+ mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.TaskAwaiter:OutputWaitEtwEvents(System.Threading.Tasks.Task,System.Action):System.Action
+ call [rax]System.Runtime.CompilerServices.TaskAwaiter:OutputWaitEtwEvents(System.Threading.Tasks.Task,System.Action):System.Action
+ mov r15, rax
+ ;; size=21 bbWeight=0.50 PerfScore 2.00
+G_M46174_IG31:
+ mov rdi, rbx
+ mov rsi, r15
+ xor edx, edx
+ mov ecx, 1
+ mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:SetContinuationForAwait(System.Action,ubyte,ubyte):this
+ call [rax]System.Threading.Tasks.Task:SetContinuationForAwait(System.Action,ubyte,ubyte):this
+ jmp SHORT G_M46174_IG33
+ ;; size=27 bbWeight=0.50 PerfScore 3.12
+G_M46174_IG32:
+ mov byte ptr [r15+0x20], 1
+ mov rdi, r15
+ mov rax, 0xD1FFAB1E ; code for System.Net.FtpControlStream:ConnectCallback(System.IAsyncResult)
+ call [rax]System.Net.FtpControlStream:ConnectCallback(System.IAsyncResult)
+ ;; size=20 bbWeight=0.50 PerfScore 2.25
+G_M46174_IG33:
mov r14d, 2
;; size=6 bbWeight=0.50 PerfScore 0.12
-G_M46174_IG26:
+G_M46174_IG34:
mov eax, r14d
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M46174_IG27:
+G_M46174_IG35:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M46174_IG28:
+G_M46174_IG36:
mov rdi, 0xD1FFAB1E ; System.Int32
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rdi, 0xD1FFAB1E ; 'net_ftp_server_failed_passive'
mov rax, 0xD1FFAB1E ; code for System.SR:GetResourceString(System.String):System.String
call [rax]System.SR:GetResourceString(System.String):System.String
mov rdi, rax
mov esi, dword ptr [r15+0x20]
mov dword ptr [r14+0x08], esi
mov rsi, r14
mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object):System.String
call [rax]System.SR:Format(System.String,System.Object):System.String
lea rdi, bword ptr [rbx+0x38]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
xor eax, eax
;; size=80 bbWeight=0.50 PerfScore 6.88
-G_M46174_IG29:
+G_M46174_IG37:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M46174_IG30:
+G_M46174_IG38:
mov byte ptr [r14], 1
mov eax, 2
;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M46174_IG31:
+G_M46174_IG39:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M46174_IG32:
+G_M46174_IG40:
mov rdi, gword ptr [rbx+0x68]
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:Accept():System.Net.Sockets.Socket:this
cmp dword ptr [rdi], edi
call [rax]System.Net.Sockets.Socket:Accept():System.Net.Sockets.Socket:this
lea rdi, bword ptr [rbx+0x68]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Net.NetworkStreamWrapper:get_ServerAddress():System.Net.IPAddress:this
call [rax]System.Net.NetworkStreamWrapper:get_ServerAddress():System.Net.IPAddress:this
mov r15, rax
mov rdi, gword ptr [rbx+0x68]
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:get_RemoteEndPoint():System.Net.EndPoint:this
cmp dword ptr [rdi], edi
call [rax]System.Net.Sockets.Socket:get_RemoteEndPoint():System.Net.EndPoint:this
mov rcx, rax
test rcx, rcx
- je SHORT G_M46174_IG35
+ je SHORT G_M46174_IG43
;; size=74 bbWeight=0.50 PerfScore 11.75
-G_M46174_IG33:
+G_M46174_IG41:
mov rdi, 0xD1FFAB1E ; System.Net.IPEndPoint
cmp qword ptr [rcx], rdi
- je SHORT G_M46174_IG35
+ je SHORT G_M46174_IG43
;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M46174_IG34:
+G_M46174_IG42:
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
call [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
mov rcx, rax
;; size=18 bbWeight=0.12 PerfScore 0.47
-G_M46174_IG35:
+G_M46174_IG43:
mov rsi, gword ptr [rcx+0x08]
mov rdi, r15
mov rax, qword ptr [r15]
mov rax, qword ptr [rax+0x40]
call [rax+0x10]System.Object:Equals(System.Object):ubyte:this
test eax, eax
- je SHORT G_M46174_IG36
+ je SHORT G_M46174_IG44
mov byte ptr [r14], 1
mov r14d, 2
- jmp SHORT G_M46174_IG37
+ jmp SHORT G_M46174_IG45
;; size=33 bbWeight=0.50 PerfScore 6.88
-G_M46174_IG36:
+G_M46174_IG44:
mov rdi, gword ptr [rbx+0x68]
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:Close():this
cmp dword ptr [rdi], edi
call [rax]System.Net.Sockets.Socket:Close():this
mov rdi, 0xD1FFAB1E ; System.Net.WebException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_net_ftp_active_address_different():System.String
call [rax]System.SR:get_net_ftp_active_address_different():System.String
mov rsi, rax
mov rdi, rbx
mov edx, 7
mov rax, 0xD1FFAB1E ; code for System.Net.WebException:.ctor(System.String,int):this
call [rax]System.Net.WebException:.ctor(System.String,int):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=80 bbWeight=0 PerfScore 0.00
-G_M46174_IG37:
+G_M46174_IG45:
mov rdi, gword ptr [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:Close():this
cmp dword ptr [rdi], edi
call [rax]System.Net.Sockets.Socket:Close():this
- jmp G_M46174_IG26
+ jmp G_M46174_IG34
;; size=23 bbWeight=0.50 PerfScore 4.62
-G_M46174_IG38:
+G_M46174_IG46:
mov rdi, gword ptr [rbx+0x68]
mov gword ptr [rbp-0x30], rdi
- jmp G_M46174_IG32
+ jmp G_M46174_IG40
;; size=13 bbWeight=0.50 PerfScore 2.50
-G_M46174_IG39:
+G_M46174_IG47:
mov rdi, gword ptr [rbx+0x68]
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:Connect(System.Net.EndPoint):this
cmp dword ptr [rdi], edi
call [rax]System.Net.Sockets.Socket:Connect(System.Net.EndPoint):this
mov r14d, 1
- jmp G_M46174_IG26
+ jmp G_M46174_IG34
;; size=32 bbWeight=0.50 PerfScore 5.38
-G_M46174_IG40:
+G_M46174_IG48:
mov rdi, 0xD1FFAB1E ; System.Net.NetEventSource
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M46174_IG20
;; size=27 bbWeight=0 PerfScore 0.00
-G_M46174_IG41:
+G_M46174_IG49:
+ mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.TplEventSource
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M46174_IG22
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M46174_IG50:
mov rdi, 0xD1FFAB1E ; System.Net.NetEventSource
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M46174_IG23
+ jmp G_M46174_IG27
;; size=27 bbWeight=0 PerfScore 0.00
-G_M46174_IG42:
+G_M46174_IG51:
+ mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.TplEventSource
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M46174_IG29
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M46174_IG52:
mov edi, 0x134C6
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_M46174_IG43:
+G_M46174_IG53:
mov edi, 0xC23
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_M46174_IG44:
+G_M46174_IG54:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x40]
;; size=22 bbWeight=0 PerfScore 0.00
-G_M46174_IG45:
+G_M46174_IG55:
mov rax, 0xD1FFAB1E ; code for System.Net.ExceptionHelper:get_RequestAbortedException():System.Net.WebException
call [rax]System.Net.ExceptionHelper:get_RequestAbortedException():System.Net.WebException
mov rdi, rax
call CORINFO_HELP_THROW
int3
;; size=21 bbWeight=0 PerfScore 0.00
-G_M46174_IG46:
+G_M46174_IG56:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x40]
;; size=22 bbWeight=0 PerfScore 0.00
-G_M46174_IG47:
+G_M46174_IG57:
mov rdi, gword ptr [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket:Close():this
cmp dword ptr [rdi], edi
call [rax]System.Net.Sockets.Socket:Close():this
nop
;; size=19 bbWeight=0 PerfScore 0.00
-G_M46174_IG48:
+G_M46174_IG58:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1586, prolog size 32, PerfScore 153.31, instruction count 372, allocated bytes for code 1586 (MethodHash=8e804ba1) for method System.Net.FtpControlStream:QueueOrCreateDataConection(System.Net.CommandStream+PipelineEntry,System.Net.ResponseDescription,byref):int:this (FullOpts)
+; Total bytes of code 2055, prolog size 32, PerfScore 197.81, instruction count 466, allocated bytes for code 2055 (MethodHash=8e804ba1) for method System.Net.FtpControlStream:QueueOrCreateDataConection(System.Net.CommandStream+PipelineEntry,System.Net.ResponseDescription,byref):int:this (FullOpts)
; ============================================================ 285 (171.69 % of base) - System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoArrayType:this ; Assembly listing for method System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoArrayType:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
-; rsp based frame
-; fully interruptible
+; rbp based frame
+; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 20 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 2.50) ref -> r15 this class-hnd single-def <System.Reflection.TypeLoading.RoModule>
-; V01 arg1 [V01,T01] ( 5, 4 ) ref -> rbx class-hnd single-def <System.Reflection.TypeLoading.RoType>
-;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 7, 7 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TypeLoading.RoArrayType>
+; V00 this [V00,T04] ( 3, 2.50) ref -> r15 this class-hnd single-def <System.Reflection.TypeLoading.RoModule>
+; V01 arg1 [V01,T00] ( 11, 7 ) ref -> rbx class-hnd single-def <System.Reflection.TypeLoading.RoType>
+; V02 OutArgs [V02 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 tmp1 [V03,T08] ( 2, 1 ) ref -> rax class-hnd exact single-def "Inline return value spill temp" <System.Reflection.TypeLoading.RoArrayType>
+; V04 tmp2 [V04,T03] ( 5, 5 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentDictionary`2[System.Reflection.TypeLoading.RoType,System.Reflection.TypeLoading.RoArrayType]>
+; V05 tmp3 [V05,T06] ( 4, 2 ) ref -> r14 class-hnd single-def "Inline stloc first use temp" <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.Reflection.TypeLoading.RoType,System.Reflection.TypeLoading.RoArrayType]>
+; V06 tmp4 [V06,T09] ( 2, 1 ) ref -> rdi class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.IEqualityComparer`1[System.Reflection.TypeLoading.RoType]>
+;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V08 tmp6 [V08 ] ( 3, 1.50) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Reflection.TypeLoading.RoArrayType>
+;* V09 tmp7 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
+;* V10 tmp8 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[int]>
+; V11 tmp9 [V11,T07] ( 4, 2 ) int -> r13 "Inline return value spill temp"
+;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.Reflection.TypeLoading.RoType>
+; V13 tmp11 [V13,T01] ( 7, 7 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TypeLoading.RoArrayType>
+; V14 tmp12 [V14,T02] ( 7, 7 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TypeLoading.RoArrayType>
+;* V15 tmp13 [V15,T11] ( 0, 0 ) ubyte -> zero-ref "field V09.hasValue (fldOffset=0x0)" P-INDEP
+; V16 tmp14 [V16,T10] ( 2, 1 ) int -> r13 "field V09.value (fldOffset=0x4)" P-INDEP
+;* V17 tmp15 [V17 ] ( 0, 0 ) ubyte -> zero-ref "field V10.hasValue (fldOffset=0x0)" P-INDEP
+;* V18 tmp16 [V18 ] ( 0, 0 ) int -> zero-ref "field V10.value (fldOffset=0x4)" P-INDEP
+; V19 tmp17 [V19,T05] ( 3, 3 ) struct ( 8) [rbp-0x38] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
;
-; Lcl frame size = 8
+; Lcl frame size = 40
G_M23311_IG01:
+ push rbp
push r15
+ push r14
+ push r13
+ push r12
push rbx
- push rax
+ sub rsp, 40
+ lea rbp, [rsp+0x50]
+ xor eax, eax
+ mov qword ptr [rbp-0x30], rax
mov r15, rdi
mov rbx, rsi
- ;; size=10 bbWeight=1 PerfScore 3.50
+ ;; size=31 bbWeight=1 PerfScore 8.50
G_M23311_IG02:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Reflection.RoModifiedType
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
je SHORT G_M23311_IG05
;; size=30 bbWeight=1 PerfScore 5.00
G_M23311_IG03:
mov rdi, 0xD1FFAB1E ; System.Reflection.TypeLoading.RoArrayType
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rdi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rdi]
lea rdi, bword ptr [r15+0x38]
call CORINFO_HELP_ASSIGN_REF
mov dword ptr [r15+0x50], -1
lea rdi, bword ptr [r15+0x60]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov byte ptr [r15+0x6C], 0
mov dword ptr [r15+0x68], 1
mov rax, r15
;; size=76 bbWeight=0.50 PerfScore 5.12
G_M23311_IG04:
- add rsp, 8
+ add rsp, 40
pop rbx
+ pop r12
+ pop r13
+ pop r14
pop r15
+ pop rbp
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.12
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M23311_IG05:
- mov rdi, gword ptr [r15+0x18]
- mov rdx, 0xD1FFAB1E ; const ptr
- mov rdx, gword ptr [rdx]
- mov rsi, rbx
- mov rax, 0xD1FFAB1E ; code for System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd(System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this
- cmp dword ptr [rdi], edi
- ;; size=32 bbWeight=0.50 PerfScore 3.88
+ mov r15, gword ptr [r15+0x18]
+ cmp byte ptr [r15], r15b
+ test rbx, rbx
+ je G_M23311_IG10
+ mov r14, gword ptr [r15+0x08]
+ mov rdi, gword ptr [r14+0x08]
+ cmp byte ptr [r15+0x19], 0
+ je SHORT G_M23311_IG06
+ mov rdi, rbx
+ mov rax, qword ptr [rbx]
+ mov rax, qword ptr [rax+0x40]
+ call [rax+0x18]System.Object:GetHashCode():int:this
+ mov r13d, eax
+ jmp SHORT G_M23311_IG07
+ ;; size=49 bbWeight=0.50 PerfScore 11.88
G_M23311_IG06:
- add rsp, 8
+ mov rsi, rbx
+ mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEqualityComparer`1[System.__Canon]:GetHashCode(System.__Canon):int:this
+ call [r11]System.Collections.Generic.IEqualityComparer`1[System.__Canon]:GetHashCode(System.__Canon):int:this
+ mov r13d, eax
+ ;; size=19 bbWeight=0.50 PerfScore 1.88
+G_M23311_IG07:
+ lea r8, [rbp-0x30]
+ mov rsi, r14
+ mov rdx, rbx
+ mov ecx, r13d
+ mov rdi, 0xD1FFAB1E ; System.Collections.Concurrent.ConcurrentDictionary`2[System.Reflection.TypeLoading.RoType,System.Reflection.TypeLoading.RoArrayType]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte
+ call [rax]System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte
+ test eax, eax
+ jne G_M23311_IG08
+ mov rdi, 0xD1FFAB1E ; System.Reflection.TypeLoading.RoArrayType
+ call CORINFO_HELP_NEWSFAST
+ mov r12, rax
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rdi]
+ lea rdi, bword ptr [r12+0x38]
+ call CORINFO_HELP_ASSIGN_REF
+ mov dword ptr [r12+0x50], -1
+ lea rdi, bword ptr [r12+0x60]
+ mov rsi, rbx
+ call CORINFO_HELP_ASSIGN_REF
+ mov byte ptr [r12+0x6C], 0
+ mov dword ptr [r12+0x68], 1
+ mov byte ptr [rbp-0x38], 1
+ mov dword ptr [rbp-0x34], r13d
+ mov dword ptr [rsp], 1
+ lea rcx, [rbp-0x30]
+ mov qword ptr [rsp+0x08], rcx
+ mov rcx, qword ptr [rbp-0x38]
+ mov rsi, r14
+ mov rdx, rbx
+ mov rdi, r15
+ mov r8, r12
+ xor r9d, r9d
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,System.Nullable`1[int],System.__Canon,ubyte,ubyte,byref):ubyte:this
+ call [rax]System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,System.Nullable`1[int],System.__Canon,ubyte,ubyte,byref):ubyte:this
+ ;; size=176 bbWeight=0.50 PerfScore 13.00
+G_M23311_IG08:
+ mov rax, gword ptr [rbp-0x30]
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M23311_IG09:
+ add rsp, 40
pop rbx
+ pop r12
+ pop r13
+ pop r14
pop r15
- tail.jmp [rax]System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd(System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this
- ;; size=10 bbWeight=0.50 PerfScore 1.62
+ pop rbp
+ ret
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M23311_IG10:
+ mov edi, 1
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(System.String)
+ call [rax]System.ThrowHelper:ThrowArgumentNullException(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 166, prolog size 10, PerfScore 20.25, instruction count 39, allocated bytes for code 166 (MethodHash=7ce8a4f0) for method System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoArrayType:this (FullOpts)
+; Total bytes of code 451, prolog size 25, PerfScore 50.12, instruction count 109, allocated bytes for code 451 (MethodHash=7ce8a4f0) for method System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoArrayType:this (FullOpts)
; ============================================================ Larger list of diffs: https://gist.github.com/MihuBot/621c8e652d062c0453b36e6bb6fca5d7 |
Top method improvements-21 (-3.95 % of base) - System.Threading.Tasks.AwaitTaskContinuation:System.Threading.IThreadPoolWorkItem.Execute():this ; Assembly listing for method System.Threading.Tasks.AwaitTaskContinuation:System.Threading.IThreadPoolWorkItem.Execute():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; 5 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 9, 5.50) ref -> [rbp-0x38] this class-hnd EH-live single-def <System.Threading.Tasks.AwaitTaskContinuation>
; V01 loc0 [V01,T08] ( 7, 2.50) ref -> [rbp-0x40] class-hnd exact EH-live single-def <System.Threading.Tasks.TplEventSource>
; V02 loc1 [V02,T01] ( 7, 4 ) ref -> rbx class-hnd exact single-def <System.Threading.ExecutionContext>
; V03 loc2 [V03 ] ( 6, 2 ) struct (16) [rbp-0x20] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op <System.Guid>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T06] ( 3, 3 ) struct (16) [rbp-0x30] do-not-enreg[SAR] multireg-arg multireg-ret "spilled call-like call argument" <System.Guid>
-;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Action`1[System.Action]>
-; V07 tmp3 [V07,T12] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
-; V08 tmp4 [V08,T13] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Threading.Thread>
-; V09 tmp5 [V09,T10] ( 4, 2 ) ref -> rax
+; V06 tmp2 [V06,T12] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
+; V07 tmp3 [V07,T13] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Threading.Thread>
+; V08 tmp4 [V08,T10] ( 4, 2 ) ref -> rax
+;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Action>
; V10 PSPSym [V10,T15] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
; V11 cse0 [V11,T09] ( 3, 2.50) int -> rcx "CSE #01: aggressive"
; V12 cse1 [V12,T14] ( 3, 1.50) int -> rcx "CSE #02: moderate"
; V13 rat0 [V13,T11] ( 3, 2 ) byref -> rax "TLS field access"
; V14 rat1 [V14,T07] ( 3, 3 ) long -> rax "TLS access"
; V15 rat2 [V15,T02] ( 3, 3 ) byref -> rax "ThreadStaticBlockBase access"
; V16 rat3 [V16,T03] ( 3, 3 ) ref -> rax "delegate invoke call"
; V17 rat4 [V17,T04] ( 3, 3 ) ref -> rcx "delegate invoke call"
; V18 rat5 [V18,T05] ( 3, 3 ) ref -> rax "delegate invoke call"
;
; Lcl frame size = 64
G_M26221_IG01:
push rbp
push r15
push rbx
sub rsp, 64
lea rbp, [rsp+0x50]
mov qword ptr [rbp-0x50], rsp
mov gword ptr [rbp-0x38], rdi
;; size=21 bbWeight=1 PerfScore 5.75
G_M26221_IG02:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M26221_IG15
;; size=19 bbWeight=1 PerfScore 4.25
G_M26221_IG03:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.TplEventSource:Log
mov rdi, gword ptr [rdi]
mov gword ptr [rbp-0x40], rdi
mov rdi, gword ptr [rbp-0x38]
mov rbx, gword ptr [rdi+0x08]
mov rax, gword ptr [rbp-0x40]
movzx rcx, byte ptr [rax+0x9D]
test ecx, ecx
jne SHORT G_M26221_IG05
;; size=40 bbWeight=1 PerfScore 10.50
G_M26221_IG04:
test rbx, rbx
jne SHORT G_M26221_IG05
mov rax, gword ptr [rdi+0x10]
mov rdi, gword ptr [rax+0x08]
call [rax+0x18]System.Action:Invoke():this
jmp G_M26221_IG13
;; size=21 bbWeight=0.50 PerfScore 5.12
G_M26221_IG05:
vxorps xmm0, xmm0, xmm0
vmovups xmmword ptr [rbp-0x20], xmm0
test ecx, ecx
je SHORT G_M26221_IG06
cmp byte ptr [rax+0xB0], 0
je SHORT G_M26221_IG06
mov ecx, dword ptr [rdi+0x18]
test ecx, ecx
je SHORT G_M26221_IG06
mov edi, ecx
mov rcx, 0xD1FFAB1E ; code for System.Threading.Tasks.TplEventSource:CreateGuidForTaskID(int):System.Guid
call [rcx]System.Threading.Tasks.TplEventSource:CreateGuidForTaskID(int):System.Guid
mov qword ptr [rbp-0x30], rax
mov qword ptr [rbp-0x28], rdx
mov rdi, qword ptr [rbp-0x30]
mov rsi, qword ptr [rbp-0x28]
lea rdx, [rbp-0x20]
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:SetCurrentThreadActivityId(System.Guid,byref)
call [rax]System.Diagnostics.Tracing.EventSource:SetCurrentThreadActivityId(System.Guid,byref)
nop
;; size=76 bbWeight=0.50 PerfScore 10.67
G_M26221_IG06:
mov rdi, gword ptr [rbp-0x38]
mov rax, gword ptr [rbp-0x40]
test rbx, rbx
- je G_M26221_IG10
+ je SHORT G_M26221_IG10
cmp byte ptr [rbx+0x19], 0
- jne G_M26221_IG10
+ jne SHORT G_M26221_IG10
lea r15, bword ptr [rdi+0x10]
mov rdi, 0xD1FFAB1E
mov rcx, 0xD1FFAB1E ; function address
call rcx
cmp dword ptr [rax], 3
jle SHORT G_M26221_IG11
mov rdi, gword ptr [rax+0x08]
mov rax, bword ptr [rdi+0x18]
test rax, rax
je SHORT G_M26221_IG11
- ;; size=71 bbWeight=0.50 PerfScore 10.25
+ ;; size=63 bbWeight=0.50 PerfScore 10.25
G_M26221_IG07:
mov rax, gword ptr [rax+0x10]
test rax, rax
jne SHORT G_M26221_IG08
mov rax, 0xD1FFAB1E ; code for System.Threading.Thread:InitializeCurrentThread():System.Threading.Thread
call [rax]System.Threading.Thread:InitializeCurrentThread():System.Threading.Thread
;; size=21 bbWeight=0.50 PerfScore 3.25
G_M26221_IG08:
lea rdi, bword ptr [rax+0x08]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
cmp gword ptr [rbx+0x10], 0
je SHORT G_M26221_IG09
mov rsi, rbx
xor rdi, rdi
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:OnValuesChanged(System.Threading.ExecutionContext,System.Threading.ExecutionContext)
call [rax]System.Threading.ExecutionContext:OnValuesChanged(System.Threading.ExecutionContext,System.Threading.ExecutionContext)
;; size=36 bbWeight=0.50 PerfScore 4.75
G_M26221_IG09:
- mov rsi, gword ptr [r15]
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rdi]
+ mov rax, gword ptr [r15]
mov rdi, gword ptr [rax+0x08]
- call [rax+0x18]System.Action`1[System.__Canon]:Invoke(System.__Canon):this
+ call [rax+0x18]System.Action:Invoke():this
jmp SHORT G_M26221_IG12
- ;; size=25 bbWeight=0.50 PerfScore 5.62
+ ;; size=12 bbWeight=0.50 PerfScore 4.50
G_M26221_IG10:
mov rcx, gword ptr [rdi+0x10]
mov rdi, gword ptr [rcx+0x08]
call [rcx+0x18]System.Action:Invoke():this
jmp SHORT G_M26221_IG12
;; size=13 bbWeight=0.50 PerfScore 4.50
G_M26221_IG11:
mov edi, 3
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
call [rax]CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
jmp SHORT G_M26221_IG07
;; size=19 bbWeight=0 PerfScore 0.00
G_M26221_IG12:
mov rax, gword ptr [rbp-0x40]
cmp byte ptr [rax+0x9D], 0
je SHORT G_M26221_IG13
cmp byte ptr [rax+0xB0], 0
je SHORT G_M26221_IG13
mov rdi, gword ptr [rbp-0x38]
cmp dword ptr [rdi+0x18], 0
je SHORT G_M26221_IG13
mov rdi, qword ptr [rbp-0x20]
mov rsi, qword ptr [rbp-0x18]
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:SetCurrentThreadActivityId(System.Guid)
call [rax]System.Diagnostics.Tracing.EventSource:SetCurrentThreadActivityId(System.Guid)
;; size=52 bbWeight=0.50 PerfScore 9.62
G_M26221_IG13:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M26221_IG14:
add rsp, 64
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
G_M26221_IG15:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.TplEventSource
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M26221_IG03
;; size=27 bbWeight=0 PerfScore 0.00
G_M26221_IG16:
push rbp
push r15
push rbx
sub rsp, 16
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x50]
;; size=19 bbWeight=0 PerfScore 0.00
G_M26221_IG17:
mov rax, gword ptr [rbp-0x40]
cmp byte ptr [rax+0x9D], 0
je SHORT G_M26221_IG18
cmp byte ptr [rax+0xB0], 0
je SHORT G_M26221_IG18
mov rdi, gword ptr [rbp-0x38]
cmp dword ptr [rdi+0x18], 0
je SHORT G_M26221_IG18
mov rdi, qword ptr [rbp-0x20]
mov rsi, qword ptr [rbp-0x18]
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:SetCurrentThreadActivityId(System.Guid)
call [rax]System.Diagnostics.Tracing.EventSource:SetCurrentThreadActivityId(System.Guid)
;; size=52 bbWeight=0 PerfScore 0.00
G_M26221_IG18:
nop
;; size=1 bbWeight=0 PerfScore 0.00
G_M26221_IG19:
add rsp, 16
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 532, prolog size 21, PerfScore 77.29, instruction count 136, allocated bytes for code 532 (MethodHash=510e9992) for method System.Threading.Tasks.AwaitTaskContinuation:System.Threading.IThreadPoolWorkItem.Execute():this (FullOpts)
+; Total bytes of code 511, prolog size 21, PerfScore 76.17, instruction count 134, allocated bytes for code 511 (MethodHash=510e9992) for method System.Threading.Tasks.AwaitTaskContinuation:System.Threading.IThreadPoolWorkItem.Execute():this (FullOpts)
; ============================================================ -18 (-1.91 % of base) - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[System.__Canon,System.Nullable`1[int]]:b__0():this ; Assembly listing for method System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[System.__Canon,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():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; 21 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T03] ( 13, 28 ) ref -> rbx this class-hnd single-def <System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[System.__Canon,System.Nullable`1[int]]>
-; V01 loc0 [V01,T19] ( 8, 11 ) int -> r15
-;* V02 loc1 [V02,T40] ( 0, 0 ) int -> zero-ref
+; V01 loc0 [V01,T18] ( 8, 11 ) int -> r15
+;* V02 loc1 [V02,T39] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T13] ( 2, 16 ) ref -> r12 class-hnd exact "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
; V05 tmp2 [V05,T01] ( 6, 48 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Parallel.StopAndGoSpoolingTask`2[System.__Canon,System.Nullable`1[int]]>
;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp4 [V07,T32] ( 2, 4 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
-; V08 tmp5 [V08,T18] ( 6, 12 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Parallel.StopAndGoSpoolingTask`2[System.__Canon,System.Nullable`1[int]]>
+; V07 tmp4 [V07,T31] ( 2, 4 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
+; V08 tmp5 [V08,T17] ( 6, 12 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Parallel.StopAndGoSpoolingTask`2[System.__Canon,System.Nullable`1[int]]>
;* V09 tmp6 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.Nullable`1[int]]>
; V11 tmp8 [V11,T14] ( 2, 16 ) ref -> [rbp-0x40] class-hnd spill-single-def "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.Nullable`1[int]]>
; V12 tmp9 [V12,T15] ( 2, 16 ) ref -> [rbp-0x48] class-hnd spill-single-def "Inlining Arg" <System.__Canon>
; V13 tmp10 [V13,T16] ( 2, 16 ) ref -> [rbp-0x50] class-hnd spill-single-def "Inlining Arg" <System.__Canon>
-;* V14 tmp11 [V14,T25] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Threading.Tasks.TaskFactory>
+;* V14 tmp11 [V14,T24] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Threading.Tasks.TaskFactory>
; V15 tmp12 [V15,T05] ( 3, 24 ) ref -> [rbp-0x58] class-hnd spill-single-def "Inlining Arg" <System.Threading.Tasks.TaskScheduler>
;* V16 tmp13 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.CancellationToken>
;* V17 tmp14 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
-;* V18 tmp15 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Action`1[System.Object]>
-; V19 tmp16 [V19,T20] ( 3, 10 ) ref -> [rbp-0x60] class-hnd spill-single-def "Inline return value spill temp" <System.Threading.Tasks.Task>
-;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Action`1[System.Object]>
-; V21 tmp18 [V21,T00] ( 9, 48 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task>
-; V22 tmp19 [V22,T17] ( 2, 16 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inlining Arg" <System.Action`1[System.Object]>
-;* V23 tmp20 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V24 tmp21 [V24,T23] ( 2, 8 ) ref -> rsi class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
-; V25 tmp22 [V25,T21] ( 4, 8 ) ref -> rsi
-; V26 tmp23 [V26,T10] ( 4, 16 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
-;* V27 tmp24 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V28 tmp25 [V28,T04] ( 4, 24 ) ref -> r12 class-hnd exact "Inlining Arg" <System.Threading.ExecutionContext>
-;* V29 tmp26 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V30 tmp27 [V30,T24] ( 2, 8 ) ref -> rcx class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
-; V31 tmp28 [V31,T22] ( 4, 8 ) ref -> rcx
-; V32 tmp29 [V32,T11] ( 4, 16 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
-;* V33 tmp30 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V34 tmp31 [V34,T33] ( 2, 4 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.Nullable`1[int]]>
-; V35 tmp32 [V35,T34] ( 2, 4 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.__Canon>
-; V36 tmp33 [V36,T35] ( 2, 4 ) ref -> [rbp-0x88] class-hnd spill-single-def "Inlining Arg" <System.__Canon>
-;* V37 tmp34 [V37,T36] ( 0, 0 ) ref -> zero-ref "field V16._source (fldOffset=0x0)" P-INDEP
-;* V38 tmp35 [V38 ] ( 0, 0 ) ref -> zero-ref "field V17._source (fldOffset=0x0)" P-INDEP
-; V39 tmp36 [V39,T06] ( 3, 24 ) ref -> rdi "arr expr"
-; V40 tmp37 [V40,T07] ( 3, 24 ) ref -> rdi "arr expr"
-; V41 tmp38 [V41,T26] ( 3, 6 ) ref -> rdi single-def "arr expr"
-; V42 tmp39 [V42,T27] ( 3, 6 ) ref -> rdi single-def "arr expr"
-; V43 cse0 [V43,T30] ( 2, 4.25) byref -> r13 hoist "CSE #02: moderate"
-; V44 rat0 [V44,T02] ( 9, 33 ) long -> r14 "Widened IV V02"
-; V45 rat1 [V45,T09] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
-; V46 rat2 [V46,T12] ( 3, 16 ) long -> rsi "runtime lookup"
-; V47 rat3 [V47,T08] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
-; V48 rat4 [V48,T29] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V49 rat5 [V49,T31] ( 3, 4 ) long -> rsi "runtime lookup"
-; V50 rat6 [V50,T28] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
-; V51 rat7 [V51,T39] ( 3, 1 ) byref -> r13 "TLS field access"
-; V52 rat8 [V52,T38] ( 3, 1.50) long -> rax "TLS access"
-; V53 rat9 [V53,T37] ( 3, 1.50) byref -> r13 "ThreadStaticBlockBase access"
+; V18 tmp15 [V18,T19] ( 3, 10 ) ref -> [rbp-0x60] class-hnd spill-single-def "Inline return value spill temp" <System.Threading.Tasks.Task>
+; V19 tmp16 [V19,T00] ( 9, 48 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task>
+;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
+; V21 tmp18 [V21,T22] ( 2, 8 ) ref -> rdx class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
+; V22 tmp19 [V22,T20] ( 4, 8 ) ref -> rdx
+; V23 tmp20 [V23,T10] ( 4, 16 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
+;* V24 tmp21 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
+; V25 tmp22 [V25,T04] ( 4, 24 ) ref -> r12 class-hnd exact "Inlining Arg" <System.Threading.ExecutionContext>
+;* V26 tmp23 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
+; V27 tmp24 [V27,T23] ( 2, 8 ) ref -> rcx class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
+; V28 tmp25 [V28,T21] ( 4, 8 ) ref -> rcx
+; V29 tmp26 [V29,T11] ( 4, 16 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
+;* V30 tmp27 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
+; V31 tmp28 [V31,T32] ( 2, 4 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.Nullable`1[int]]>
+; V32 tmp29 [V32,T33] ( 2, 4 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.__Canon>
+; V33 tmp30 [V33,T34] ( 2, 4 ) ref -> [rbp-0x80] class-hnd spill-single-def "Inlining Arg" <System.__Canon>
+;* V34 tmp31 [V34,T35] ( 0, 0 ) ref -> zero-ref "field V16._source (fldOffset=0x0)" P-INDEP
+;* V35 tmp32 [V35 ] ( 0, 0 ) ref -> zero-ref "field V17._source (fldOffset=0x0)" P-INDEP
+; V36 tmp33 [V36,T06] ( 3, 24 ) ref -> rdi "arr expr"
+; V37 tmp34 [V37,T07] ( 3, 24 ) ref -> rdi "arr expr"
+; V38 tmp35 [V38,T25] ( 3, 6 ) ref -> rdi single-def "arr expr"
+; V39 tmp36 [V39,T26] ( 3, 6 ) ref -> rdi single-def "arr expr"
+; V40 cse0 [V40,T29] ( 2, 4.25) byref -> r13 hoist "CSE #02: moderate"
+; V41 rat0 [V41,T02] ( 9, 33 ) long -> r14 "Widened IV V02"
+; V42 rat1 [V42,T09] ( 3, 17.60) long -> rdi "Spilling to split statement for tree"
+; V43 rat2 [V43,T12] ( 3, 16 ) long -> rsi "runtime lookup"
+; V44 rat3 [V44,T08] ( 3, 22.40) long -> rsi "fgMakeTemp is creating a new local variable"
+; V45 rat4 [V45,T28] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V46 rat5 [V46,T30] ( 3, 4 ) long -> rsi "runtime lookup"
+; V47 rat6 [V47,T27] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
+; V48 rat7 [V48,T38] ( 3, 1 ) byref -> r13 "TLS field access"
+; V49 rat8 [V49,T37] ( 3, 1.50) long -> rax "TLS access"
+; V50 rat9 [V50,T36] ( 3, 1.50) byref -> r13 "ThreadStaticBlockBase access"
;
; Lcl frame size = 104
G_M19968_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 104
lea rbp, [rsp+0x90]
mov qword ptr [rbp-0x30], rdi
mov rbx, rdi
;; size=29 bbWeight=1 PerfScore 8.00
G_M19968_IG02:
mov rdi, gword ptr [rbx+0x08]
mov rdi, gword ptr [rdi+0x08]
mov r15d, dword ptr [rdi+0x08]
dec r15d
xor r14d, r14d
test r15d, r15d
jle G_M19968_IG15
;; size=27 bbWeight=1 PerfScore 7.75
G_M19968_IG03:
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 9
jle G_M19968_IG20
mov rdi, gword ptr [rax+0x08]
mov r13, bword ptr [rdi+0x48]
test r13, r13
je G_M19968_IG20
;; size=48 bbWeight=0.25 PerfScore 3.19
G_M19968_IG04:
mov r12, gword ptr [rbx+0x10]
mov rax, gword ptr [rbx+0x08]
mov gword ptr [rbp-0x40], rax
mov rdi, qword ptr [rbx]
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov rsi, qword ptr [rsi+0x18]
test rsi, rsi
je G_M19968_IG19
;; size=35 bbWeight=4 PerfScore 57.00
G_M19968_IG05:
mov rdi, rsi
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x38], rax
mov rdi, gword ptr [rbp-0x40]
mov rdi, gword ptr [rdi+0x08]
cmp r14d, dword ptr [rdi+0x08]
jae G_M19968_IG23
mov rcx, gword ptr [rdi+8*r14+0x10]
mov gword ptr [rbp-0x48], rcx
mov rdi, gword ptr [rbx+0x18]
cmp r14d, dword ptr [rdi+0x08]
jae G_M19968_IG23
mov rdx, gword ptr [rdi+8*r14+0x10]
mov gword ptr [rbp-0x50], rdx
mov dword ptr [rax+0x10], r14d
lea rdi, bword ptr [rax+0x08]
mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
mov r12, gword ptr [rbp-0x38]
lea rdi, bword ptr [r12+0x18]
mov rsi, gword ptr [rbp-0x48]
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r12+0x20]
mov rsi, gword ptr [rbp-0x50]
call CORINFO_HELP_ASSIGN_REF
mov rax, gword ptr [rbx+0x20]
mov gword ptr [rbp-0x58], rax
mov rcx, gword ptr [r13+0x10]
mov gword ptr [rbp-0x60], rcx
test rax, rax
je G_M19968_IG22
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x68], rax
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rcx, gword ptr [rdi]
- mov gword ptr [rbp-0x70], rcx
cmp gword ptr [rbp-0x60], 0
- mov rcx, gword ptr [rbp-0x70]
je SHORT G_M19968_IG08
- ;; size=182 bbWeight=4 PerfScore 187.00
+ ;; size=161 bbWeight=4 PerfScore 170.00
G_M19968_IG06:
- mov rdx, gword ptr [rbp-0x60]
- mov rsi, gword ptr [rax+0x28]
- test rsi, rsi
+ mov rcx, gword ptr [rbp-0x60]
+ mov rdx, gword ptr [rax+0x28]
+ test rdx, rdx
jne SHORT G_M19968_IG07
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+ContingentProperties
call CORINFO_HELP_NEWSFAST
- mov rsi, rax
- mov gword ptr [rbp-0x78], rsi
- mov dword ptr [rsi+0x3C], 1
+ mov rdx, rax
+ mov gword ptr [rbp-0x70], rdx
+ mov dword ptr [rdx+0x3C], 1
mov rax, gword ptr [rbp-0x68]
lea rdi, bword ptr [rax+0x28]
- call CORINFO_HELP_ASSIGN_REF
- mov rsi, gword ptr [rbp-0x78]
- mov rdx, gword ptr [rbp-0x60]
- ;; size=63 bbWeight=2 PerfScore 24.50
-G_M19968_IG07:
- lea rdi, bword ptr [rsi+0x30]
mov rsi, rdx
call CORINFO_HELP_ASSIGN_REF
- mov rax, gword ptr [rbp-0x68]
- mov rcx, gword ptr [rbp-0x70]
- ;; size=20 bbWeight=2 PerfScore 7.50
-G_M19968_IG08:
- mov rdi, gword ptr [rbp-0x58]
- mov gword ptr [rsp], rdi
- mov rdi, rax
+ mov rdx, gword ptr [rbp-0x70]
+ mov rcx, gword ptr [rbp-0x60]
+ ;; size=66 bbWeight=2 PerfScore 25.00
+G_M19968_IG07:
+ lea rdi, bword ptr [rdx+0x30]
mov rsi, rcx
+ call CORINFO_HELP_ASSIGN_REF
+ mov rax, gword ptr [rbp-0x68]
+ ;; size=16 bbWeight=2 PerfScore 5.50
+G_M19968_IG08:
+ mov rsi, gword ptr [rbp-0x58]
+ mov gword ptr [rsp], rsi
+ mov rsi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rsi]
+ mov rdi, rax
mov rdx, r12
xor rcx, rcx
mov r8d, 5
mov r9d, 0x2000
mov r10, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:TaskConstructorCore(System.Delegate,System.Object,System.Threading.CancellationToken,int,int,System.Threading.Tasks.TaskScheduler):this
call [r10]System.Threading.Tasks.Task:TaskConstructorCore(System.Delegate,System.Object,System.Threading.CancellationToken,int,int,System.Threading.Tasks.TaskScheduler):this
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
call [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
mov r12, rax
test r12, r12
je SHORT G_M19968_IG13
- ;; size=64 bbWeight=4 PerfScore 46.00
+ ;; size=74 bbWeight=4 PerfScore 54.00
G_M19968_IG09:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M19968_IG21
;; size=19 bbWeight=2 PerfScore 8.50
G_M19968_IG10:
mov rdi, 0xD1FFAB1E ; data for System.Threading.ExecutionContext:Default
cmp r12, gword ptr [rdi]
je SHORT G_M19968_IG12
mov rax, gword ptr [rbp-0x68]
mov rcx, gword ptr [rax+0x28]
test rcx, rcx
jne SHORT G_M19968_IG11
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+ContingentProperties
call CORINFO_HELP_NEWSFAST
mov rcx, rax
- mov gword ptr [rbp-0x80], rcx
+ mov gword ptr [rbp-0x78], rcx
mov dword ptr [rcx+0x3C], 1
mov rax, gword ptr [rbp-0x68]
lea rdi, bword ptr [rax+0x28]
mov rsi, rcx
call CORINFO_HELP_ASSIGN_REF
- mov rcx, gword ptr [rbp-0x80]
+ mov rcx, gword ptr [rbp-0x78]
;; size=77 bbWeight=2 PerfScore 31.50
G_M19968_IG11:
lea rdi, bword ptr [rcx+0x08]
mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
mov r12, gword ptr [rbp-0x68]
jmp SHORT G_M19968_IG14
;; size=18 bbWeight=2 PerfScore 9.50
G_M19968_IG12:
mov r12, gword ptr [rbp-0x68]
jmp SHORT G_M19968_IG14
;; size=6 bbWeight=1 PerfScore 3.00
G_M19968_IG13:
mov r12, gword ptr [rbp-0x68]
or dword ptr [r12+0x34], 0xD1FFAB1E
;; size=13 bbWeight=2 PerfScore 8.00
G_M19968_IG14:
mov rdi, r12
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:ScheduleAndStart(ubyte):this
call [rax]System.Threading.Tasks.Task:ScheduleAndStart(ubyte):this
inc r14d
cmp r14d, r15d
jl G_M19968_IG04
;; size=29 bbWeight=4 PerfScore 21.00
G_M19968_IG15:
mov r14, gword ptr [rbx+0x10]
mov r13, gword ptr [rbx+0x08]
mov rdi, qword ptr [rbx]
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi]
mov rsi, qword ptr [rsi+0x18]
test rsi, rsi
je G_M19968_IG18
;; size=31 bbWeight=1 PerfScore 13.25
G_M19968_IG16:
mov rdi, rsi
call CORINFO_HELP_NEWSFAST
mov r12, rax
mov rdi, gword ptr [r13+0x08]
cmp r15d, dword ptr [rdi+0x08]
jae G_M19968_IG23
mov esi, r15d
mov r13, gword ptr [rdi+8*rsi+0x10]
mov rdi, gword ptr [rbx+0x18]
cmp r15d, dword ptr [rdi+0x08]
jae G_M19968_IG23
mov esi, r15d
mov rax, gword ptr [rdi+8*rsi+0x10]
- mov gword ptr [rbp-0x88], rax
+ mov gword ptr [rbp-0x80], rax
mov dword ptr [r12+0x10], r15d
lea rdi, bword ptr [r12+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r12+0x18]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r12+0x20]
- mov rsi, gword ptr [rbp-0x88]
+ mov rsi, gword ptr [rbp-0x80]
call CORINFO_HELP_ASSIGN_REF
mov rsi, gword ptr [rbx+0x20]
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Linq.Parallel.QueryTask:RunSynchronously(System.Threading.Tasks.TaskScheduler):System.Threading.Tasks.Task:this
call [rax]System.Linq.Parallel.QueryTask:RunSynchronously(System.Threading.Tasks.TaskScheduler):System.Threading.Tasks.Task:this
nop
- ;; size=130 bbWeight=1 PerfScore 31.75
+ ;; size=124 bbWeight=1 PerfScore 31.75
G_M19968_IG17:
add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M19968_IG18:
mov rsi, 0xD1FFAB1E ; global ptr
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
call [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rsi, rax
jmp G_M19968_IG16
;; size=30 bbWeight=0.20 PerfScore 1.15
G_M19968_IG19:
mov rsi, 0xD1FFAB1E ; global ptr
mov rcx, 0xD1FFAB1E ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
call [rcx]CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rsi, rax
jmp G_M19968_IG05
;; size=30 bbWeight=0.80 PerfScore 4.60
G_M19968_IG20:
mov edi, 9
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
call [rax]CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
mov r13, rax
jmp G_M19968_IG04
;; size=25 bbWeight=0 PerfScore 0.00
G_M19968_IG21:
mov rdi, 0xD1FFAB1E ; System.Threading.ExecutionContext
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M19968_IG10
;; size=27 bbWeight=0 PerfScore 0.00
G_M19968_IG22:
mov edi, 47
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
G_M19968_IG23:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 942, prolog size 26, PerfScore 477.44, instruction count 215, allocated bytes for code 942 (MethodHash=98a6b1ff) for method System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[System.__Canon,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
+; Total bytes of code 924, prolog size 26, PerfScore 466.94, instruction count 212, allocated bytes for code 924 (MethodHash=98a6b1ff) for method System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[System.__Canon,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
; ============================================================ -15 (-1.97 % of base) - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[double,System.Nullable`1[int]]:b__0():this ; Assembly listing for method System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[double,System.Nullable`1[int]]:<SpoolForAll>b__0():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; 21 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T06] ( 9, 18 ) ref -> rbx this class-hnd single-def <System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[double,System.Nullable`1[int]]>
-; V01 loc0 [V01,T15] ( 6, 9 ) int -> r15
-;* V02 loc1 [V02,T30] ( 0, 0 ) int -> zero-ref
+; V01 loc0 [V01,T14] ( 6, 9 ) int -> r15
+;* V02 loc1 [V02,T29] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T09] ( 2, 16 ) ref -> r12 class-hnd exact "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
; V05 tmp2 [V05,T01] ( 5, 40 ) ref -> [rbp-0x30] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Parallel.ForAllSpoolingTask`2[double,System.Nullable`1[int]]>
-; V06 tmp3 [V06,T23] ( 2, 4 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
-; V07 tmp4 [V07,T13] ( 5, 10 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Parallel.ForAllSpoolingTask`2[double,System.Nullable`1[int]]>
+; V06 tmp3 [V06,T22] ( 2, 4 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
+; V07 tmp4 [V07,T12] ( 5, 10 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Parallel.ForAllSpoolingTask`2[double,System.Nullable`1[int]]>
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]]>
; V09 tmp6 [V09,T10] ( 2, 16 ) ref -> [rbp-0x38] class-hnd spill-single-def "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]]>
; V10 tmp7 [V10,T11] ( 2, 16 ) ref -> [rbp-0x40] class-hnd spill-single-def "Inlining Arg" <System.Linq.Parallel.QueryOperatorEnumerator`2[double,System.Nullable`1[int]]>
-;* V11 tmp8 [V11,T20] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Threading.Tasks.TaskFactory>
+;* V11 tmp8 [V11,T19] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Threading.Tasks.TaskFactory>
; V12 tmp9 [V12,T04] ( 3, 24 ) ref -> [rbp-0x48] class-hnd spill-single-def "Inlining Arg" <System.Threading.Tasks.TaskScheduler>
;* V13 tmp10 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.CancellationToken>
;* V14 tmp11 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
-;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Action`1[System.Object]>
-; V16 tmp13 [V16,T14] ( 3, 10 ) ref -> [rbp-0x50] class-hnd spill-single-def "Inline return value spill temp" <System.Threading.Tasks.Task>
-;* V17 tmp14 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Action`1[System.Object]>
-; V18 tmp15 [V18,T00] ( 9, 48 ) ref -> [rbp-0x58] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task>
-; V19 tmp16 [V19,T12] ( 2, 16 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "Inlining Arg" <System.Action`1[System.Object]>
-;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V21 tmp18 [V21,T18] ( 2, 8 ) ref -> rsi class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
-; V22 tmp19 [V22,T16] ( 4, 8 ) ref -> rsi
-; V23 tmp20 [V23,T07] ( 4, 16 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
-;* V24 tmp21 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V25 tmp22 [V25,T03] ( 4, 24 ) ref -> r12 class-hnd exact "Inlining Arg" <System.Threading.ExecutionContext>
-;* V26 tmp23 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V27 tmp24 [V27,T19] ( 2, 8 ) ref -> rcx class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
-; V28 tmp25 [V28,T17] ( 4, 8 ) ref -> rcx
-; V29 tmp26 [V29,T08] ( 4, 16 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
-;* V30 tmp27 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V31 tmp28 [V31,T24] ( 2, 4 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]]>
-; V32 tmp29 [V32,T25] ( 2, 4 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.Linq.Parallel.QueryOperatorEnumerator`2[double,System.Nullable`1[int]]>
-;* V33 tmp30 [V33,T26] ( 0, 0 ) ref -> zero-ref "field V13._source (fldOffset=0x0)" P-INDEP
-;* V34 tmp31 [V34 ] ( 0, 0 ) ref -> zero-ref "field V14._source (fldOffset=0x0)" P-INDEP
-; V35 tmp32 [V35,T05] ( 3, 24 ) ref -> rdi "arr expr"
-; V36 tmp33 [V36,T21] ( 3, 6 ) ref -> rdi single-def "arr expr"
-; V37 cse0 [V37,T22] ( 2, 4.25) byref -> r13 hoist "CSE #01: moderate"
-; V38 rat0 [V38,T02] ( 7, 25 ) long -> r14 "Widened IV V02"
-; V39 rat1 [V39,T29] ( 3, 1 ) byref -> r13 "TLS field access"
-; V40 rat2 [V40,T28] ( 3, 1.50) long -> rax "TLS access"
-; V41 rat3 [V41,T27] ( 3, 1.50) byref -> r13 "ThreadStaticBlockBase access"
+; V15 tmp12 [V15,T13] ( 3, 10 ) ref -> [rbp-0x50] class-hnd spill-single-def "Inline return value spill temp" <System.Threading.Tasks.Task>
+; V16 tmp13 [V16,T00] ( 9, 48 ) ref -> [rbp-0x58] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task>
+;* V17 tmp14 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
+; V18 tmp15 [V18,T17] ( 2, 8 ) ref -> rdx class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
+; V19 tmp16 [V19,T15] ( 4, 8 ) ref -> rdx
+; V20 tmp17 [V20,T07] ( 4, 16 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
+;* V21 tmp18 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
+; V22 tmp19 [V22,T03] ( 4, 24 ) ref -> r12 class-hnd exact "Inlining Arg" <System.Threading.ExecutionContext>
+;* V23 tmp20 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
+; V24 tmp21 [V24,T18] ( 2, 8 ) ref -> rcx class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
+; V25 tmp22 [V25,T16] ( 4, 8 ) ref -> rcx
+; V26 tmp23 [V26,T08] ( 4, 16 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
+;* V27 tmp24 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
+; V28 tmp25 [V28,T23] ( 2, 4 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]]>
+; V29 tmp26 [V29,T24] ( 2, 4 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.Linq.Parallel.QueryOperatorEnumerator`2[double,System.Nullable`1[int]]>
+;* V30 tmp27 [V30,T25] ( 0, 0 ) ref -> zero-ref "field V13._source (fldOffset=0x0)" P-INDEP
+;* V31 tmp28 [V31 ] ( 0, 0 ) ref -> zero-ref "field V14._source (fldOffset=0x0)" P-INDEP
+; V32 tmp29 [V32,T05] ( 3, 24 ) ref -> rdi "arr expr"
+; V33 tmp30 [V33,T20] ( 3, 6 ) ref -> rdi single-def "arr expr"
+; V34 cse0 [V34,T21] ( 2, 4.25) byref -> r13 hoist "CSE #01: moderate"
+; V35 rat0 [V35,T02] ( 7, 25 ) long -> r14 "Widened IV V02"
+; V36 rat1 [V36,T28] ( 3, 1 ) byref -> r13 "TLS field access"
+; V37 rat2 [V37,T27] ( 3, 1.50) long -> rax "TLS access"
+; V38 rat3 [V38,T26] ( 3, 1.50) byref -> r13 "ThreadStaticBlockBase access"
;
-; Lcl frame size = 88
+; Lcl frame size = 72
G_M29136_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 88
- lea rbp, [rsp+0x80]
+ sub rsp, 72
+ lea rbp, [rsp+0x70]
mov rbx, rdi
- ;; size=25 bbWeight=1 PerfScore 7.00
+ ;; size=22 bbWeight=1 PerfScore 7.00
G_M29136_IG02:
mov rdi, gword ptr [rbx+0x08]
mov rdi, gword ptr [rdi+0x08]
mov r15d, dword ptr [rdi+0x08]
dec r15d
xor r14d, r14d
test r15d, r15d
jle G_M29136_IG14
;; size=27 bbWeight=1 PerfScore 7.75
G_M29136_IG03:
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 9
jle G_M29136_IG16
mov rdi, gword ptr [rax+0x08]
mov r13, bword ptr [rdi+0x48]
test r13, r13
je G_M29136_IG16
;; size=48 bbWeight=0.25 PerfScore 3.19
G_M29136_IG04:
mov r12, gword ptr [rbx+0x10]
mov rax, gword ptr [rbx+0x08]
mov gword ptr [rbp-0x38], rax
mov rdi, 0xD1FFAB1E ; System.Linq.Parallel.ForAllSpoolingTask`2[double,System.Nullable`1[int]]
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x30], rax
mov rdi, gword ptr [rbp-0x38]
mov rdi, gword ptr [rdi+0x08]
cmp r14d, dword ptr [rdi+0x08]
jae G_M29136_IG19
mov rcx, gword ptr [rdi+8*r14+0x10]
mov gword ptr [rbp-0x40], rcx
mov dword ptr [rax+0x10], r14d
lea rdi, bword ptr [rax+0x08]
mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
mov r12, gword ptr [rbp-0x30]
lea rdi, bword ptr [r12+0x18]
mov rsi, gword ptr [rbp-0x40]
call CORINFO_HELP_ASSIGN_REF
mov rax, gword ptr [rbx+0x18]
mov gword ptr [rbp-0x48], rax
mov rcx, gword ptr [r13+0x10]
mov gword ptr [rbp-0x50], rcx
test rax, rax
je G_M29136_IG18
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x58], rax
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rcx, gword ptr [rdi]
- mov gword ptr [rbp-0x60], rcx
cmp gword ptr [rbp-0x50], 0
- mov rcx, gword ptr [rbp-0x60]
je SHORT G_M29136_IG07
- ;; size=164 bbWeight=4 PerfScore 161.00
+ ;; size=143 bbWeight=4 PerfScore 144.00
G_M29136_IG05:
- mov rdx, gword ptr [rbp-0x50]
- mov rsi, gword ptr [rax+0x28]
- test rsi, rsi
+ mov rcx, gword ptr [rbp-0x50]
+ mov rdx, gword ptr [rax+0x28]
+ test rdx, rdx
jne SHORT G_M29136_IG06
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+ContingentProperties
call CORINFO_HELP_NEWSFAST
- mov rsi, rax
- mov gword ptr [rbp-0x68], rsi
- mov dword ptr [rsi+0x3C], 1
+ mov rdx, rax
+ mov gword ptr [rbp-0x60], rdx
+ mov dword ptr [rdx+0x3C], 1
mov rax, gword ptr [rbp-0x58]
lea rdi, bword ptr [rax+0x28]
- call CORINFO_HELP_ASSIGN_REF
- mov rsi, gword ptr [rbp-0x68]
- mov rdx, gword ptr [rbp-0x50]
- ;; size=63 bbWeight=2 PerfScore 24.50
-G_M29136_IG06:
- lea rdi, bword ptr [rsi+0x30]
mov rsi, rdx
call CORINFO_HELP_ASSIGN_REF
- mov rax, gword ptr [rbp-0x58]
- mov rcx, gword ptr [rbp-0x60]
- ;; size=20 bbWeight=2 PerfScore 7.50
-G_M29136_IG07:
- mov rdi, gword ptr [rbp-0x48]
- mov gword ptr [rsp], rdi
- mov rdi, rax
+ mov rdx, gword ptr [rbp-0x60]
+ mov rcx, gword ptr [rbp-0x50]
+ ;; size=66 bbWeight=2 PerfScore 25.00
+G_M29136_IG06:
+ lea rdi, bword ptr [rdx+0x30]
mov rsi, rcx
+ call CORINFO_HELP_ASSIGN_REF
+ mov rax, gword ptr [rbp-0x58]
+ ;; size=16 bbWeight=2 PerfScore 5.50
+G_M29136_IG07:
+ mov rsi, gword ptr [rbp-0x48]
+ mov gword ptr [rsp], rsi
+ mov rsi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rsi]
+ mov rdi, rax
mov rdx, r12
xor rcx, rcx
mov r8d, 5
mov r9d, 0x2000
mov r10, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:TaskConstructorCore(System.Delegate,System.Object,System.Threading.CancellationToken,int,int,System.Threading.Tasks.TaskScheduler):this
call [r10]System.Threading.Tasks.Task:TaskConstructorCore(System.Delegate,System.Object,System.Threading.CancellationToken,int,int,System.Threading.Tasks.TaskScheduler):this
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
call [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
mov r12, rax
test r12, r12
je SHORT G_M29136_IG12
- ;; size=64 bbWeight=4 PerfScore 46.00
+ ;; size=74 bbWeight=4 PerfScore 54.00
G_M29136_IG08:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M29136_IG17
;; size=19 bbWeight=2 PerfScore 8.50
G_M29136_IG09:
mov rdi, 0xD1FFAB1E ; data for System.Threading.ExecutionContext:Default
cmp r12, gword ptr [rdi]
je SHORT G_M29136_IG11
mov rax, gword ptr [rbp-0x58]
mov rcx, gword ptr [rax+0x28]
test rcx, rcx
jne SHORT G_M29136_IG10
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+ContingentProperties
call CORINFO_HELP_NEWSFAST
mov rcx, rax
- mov gword ptr [rbp-0x70], rcx
+ mov gword ptr [rbp-0x68], rcx
mov dword ptr [rcx+0x3C], 1
mov rax, gword ptr [rbp-0x58]
lea rdi, bword ptr [rax+0x28]
mov rsi, rcx
call CORINFO_HELP_ASSIGN_REF
- mov rcx, gword ptr [rbp-0x70]
+ mov rcx, gword ptr [rbp-0x68]
;; size=77 bbWeight=2 PerfScore 31.50
G_M29136_IG10:
lea rdi, bword ptr [rcx+0x08]
mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
mov r12, gword ptr [rbp-0x58]
jmp SHORT G_M29136_IG13
;; size=18 bbWeight=2 PerfScore 9.50
G_M29136_IG11:
mov r12, gword ptr [rbp-0x58]
jmp SHORT G_M29136_IG13
;; size=6 bbWeight=1 PerfScore 3.00
G_M29136_IG12:
mov r12, gword ptr [rbp-0x58]
or dword ptr [r12+0x34], 0xD1FFAB1E
;; size=13 bbWeight=2 PerfScore 8.00
G_M29136_IG13:
mov rdi, r12
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:ScheduleAndStart(ubyte):this
call [rax]System.Threading.Tasks.Task:ScheduleAndStart(ubyte):this
inc r14d
cmp r14d, r15d
jl G_M29136_IG04
;; size=29 bbWeight=4 PerfScore 21.00
G_M29136_IG14:
mov r14, gword ptr [rbx+0x10]
mov r13, gword ptr [rbx+0x08]
mov rdi, 0xD1FFAB1E ; System.Linq.Parallel.ForAllSpoolingTask`2[double,System.Nullable`1[int]]
call CORINFO_HELP_NEWSFAST
mov r12, rax
mov rdi, gword ptr [r13+0x08]
cmp r15d, dword ptr [rdi+0x08]
jae G_M29136_IG19
mov esi, r15d
mov r13, gword ptr [rdi+8*rsi+0x10]
mov dword ptr [r12+0x10], r15d
lea rdi, bword ptr [r12+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r12+0x18]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
mov rsi, gword ptr [rbx+0x18]
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Linq.Parallel.QueryTask:RunSynchronously(System.Threading.Tasks.TaskScheduler):System.Threading.Tasks.Task:this
call [rax]System.Linq.Parallel.QueryTask:RunSynchronously(System.Threading.Tasks.TaskScheduler):System.Threading.Tasks.Task:this
nop
;; size=99 bbWeight=1 PerfScore 24.00
G_M29136_IG15:
- add rsp, 88
+ add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M29136_IG16:
mov edi, 9
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
call [rax]CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
mov r13, rax
jmp G_M29136_IG04
;; size=25 bbWeight=0 PerfScore 0.00
G_M29136_IG17:
mov rdi, 0xD1FFAB1E ; System.Threading.ExecutionContext
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M29136_IG09
;; size=27 bbWeight=0 PerfScore 0.00
G_M29136_IG18:
mov edi, 47
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
G_M29136_IG19:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 763, prolog size 22, PerfScore 366.69, instruction count 175, allocated bytes for code 763 (MethodHash=12228e2f) for method System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[double,System.Nullable`1[int]]:<SpoolForAll>b__0():this (FullOpts)
+; Total bytes of code 748, prolog size 19, PerfScore 356.19, instruction count 172, allocated bytes for code 748 (MethodHash=12228e2f) for method System.Linq.Parallel.SpoolingTask+<>c__DisplayClass2_0`2[double,System.Nullable`1[int]]:<SpoolForAll>b__0():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/68306e19133d7088a6ebc870e23e2979 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 20 minutes 19 seconds.
dotnet/runtime#109715
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: