-36 (-1.89 % of base) - System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this
; Assembly listing for method System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]: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; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 17 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T10] ( 9, 5.50) ref -> [rbp-0x40] this class-hnd single-def <System.Buffers.SharedArrayPool`1[ubyte]>
+; V00 this [V00,T10] ( 9, 5.50) ref -> r15 this class-hnd single-def <System.Buffers.SharedArrayPool`1[ubyte]>
; V01 arg1 [V01,T08] ( 9, 6 ) int -> rbx
-; V02 loc0 [V02,T16] ( 8, 4.50) ref -> [rbp-0x48] class-hnd exact spill-single-def <System.Buffers.ArrayPoolEventSource>
+; V02 loc0 [V02,T16] ( 8, 4.50) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
; V03 loc1 [V03,T11] ( 14, 7 ) ref -> registers class-hnd <ubyte[]>
; V04 loc2 [V04,T14] ( 9, 5 ) int -> r13
-; V05 loc3 [V05,T18] ( 5, 3.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V06 loc4 [V06,T30] ( 3, 1.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
-; V07 loc5 [V07,T31] ( 3, 1.50) ref -> rax class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
-; V08 loc6 [V08,T34] ( 3, 1.50) int -> rbx
+; V05 loc3 [V05,T19] ( 5, 3.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V06 loc4 [V06,T32] ( 3, 1.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
+; V07 loc5 [V07,T33] ( 3, 1.50) ref -> rdi class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
+; V08 loc6 [V08,T36] ( 3, 1.50) int -> rbx
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T19] ( 2, 2 ) int -> [rbp-0x2C] spill-single-def "impAppendStmt"
-; V11 tmp2 [V11,T20] ( 2, 2 ) int -> [rbp-0x30] spill-single-def "impAppendStmt"
-; V12 tmp3 [V12,T21] ( 2, 2 ) int -> rcx "impAppendStmt"
+; V10 tmp1 [V10,T20] ( 2, 2 ) int -> [rbp-0x2C] spill-single-def "impAppendStmt"
+; V11 tmp2 [V11,T21] ( 2, 2 ) int -> [rbp-0x30] spill-single-def "impAppendStmt"
+; V12 tmp3 [V12,T22] ( 2, 2 ) int -> rcx "impAppendStmt"
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref single-def
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp14 [V23,T36] ( 2, 1 ) int -> r9
+; V23 tmp14 [V23,T40] ( 2, 1 ) int -> r9
;* V24 tmp15 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
-; V25 tmp16 [V25,T22] ( 2, 2 ) int -> rbx "impAppendStmt"
-; V26 tmp17 [V26,T23] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
+; V25 tmp16 [V25,T23] ( 2, 2 ) int -> rbx "impAppendStmt"
+; V26 tmp17 [V26,T24] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
-; V28 tmp19 [V28,T24] ( 2, 2 ) int -> r12 "impAppendStmt"
-; V29 tmp20 [V29,T25] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
+; V28 tmp19 [V28,T25] ( 2, 2 ) int -> r12 "impAppendStmt"
+; V29 tmp20 [V29,T26] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V32 tmp23 [V32,T32] ( 3, 1.50) ref -> rcx class-hnd "Inline return value spill temp" <System.Array>
-; V33 tmp24 [V33,T15] ( 3, 5 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+; V32 tmp23 [V32,T34] ( 3, 1.50) ref -> rcx class-hnd "Inline return value spill temp" <System.Array>
+; V33 tmp24 [V33,T15] ( 3, 5 ) ref -> r12 class-hnd exact single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
; V34 tmp25 [V34,T01] ( 7, 22.50) int -> rbx "Inline stloc first use temp"
-; V35 tmp26 [V35,T05] ( 4, 12.50) int -> r15 "Inline stloc first use temp"
+; V35 tmp26 [V35,T05] ( 4, 12.50) int -> [rbp-0x3C] "Inline stloc first use temp"
;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array>
;* V37 tmp28 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Array>
; V38 tmp29 [V38,T02] ( 2, 16 ) int -> rbx "dup spill"
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V40 tmp31 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V41 tmp32 [V41,T07] ( 4, 10.50) ref -> [rbp-0x58] class-hnd "Inline stloc first use temp" <System.Array>
-; V42 tmp33 [V42,T00] ( 7, 52 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-; V43 tmp34 [V43,T06] ( 4, 12 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
-; V44 tmp35 [V44,T03] ( 5, 14 ) int -> rcx "Inline stloc first use temp"
-; V45 tmp36 [V45,T33] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <ubyte[]>
-;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V47 tmp38 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
-; V48 tmp39 [V48,T26] ( 2, 2 ) int -> rcx "argument with side effect"
-; V49 tmp40 [V49,T27] ( 2, 2 ) int -> rcx "argument with side effect"
-; V50 tmp41 [V50,T28] ( 2, 2 ) int -> rcx "argument with side effect"
-; V51 cse0 [V51,T37] ( 2, 1 ) int -> rdi "CSE #04: moderate"
-; V52 cse1 [V52,T35] ( 3, 1.50) long -> rax "CSE #03: moderate"
-; V53 cse2 [V53,T04] ( 5, 13 ) int -> r14 "CSE #05: moderate"
-; V54 cse3 [V54,T09] ( 2, 8 ) int -> rdx "CSE #06: moderate"
-; V55 cse4 [V55,T38] ( 2, 1 ) int -> rdi "CSE #01: moderate"
-; V56 rat0 [V56,T29] ( 2, 2 ) int -> rbx "Spilling to split statement for tree"
-; V57 rat1 [V57,T17] ( 3, 4 ) byref -> rax "TLS field access"
-; V58 rat2 [V58,T13] ( 3, 6 ) long -> rax "TLS access"
-; V59 rat3 [V59,T12] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V40 tmp31 [V40,T37] ( 3, 1.50) int -> rbx "Inline return value spill temp"
+; V41 tmp32 [V41,T17] ( 4, 4 ) int -> rbx "dup spill"
+;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V43 tmp34 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
+; V44 tmp35 [V44,T07] ( 4, 10.50) ref -> [rbp-0x48] class-hnd "Inline stloc first use temp" <System.Array>
+; V45 tmp36 [V45,T00] ( 7, 52 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V46 tmp37 [V46,T06] ( 4, 12 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
+; V47 tmp38 [V47,T03] ( 5, 14 ) int -> rax "Inline stloc first use temp"
+; V48 tmp39 [V48,T35] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <ubyte[]>
+;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V50 tmp41 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
+; V51 tmp42 [V51,T27] ( 2, 2 ) int -> rcx "argument with side effect"
+; V52 tmp43 [V52,T28] ( 2, 2 ) int -> rcx "argument with side effect"
+; V53 tmp44 [V53,T29] ( 2, 2 ) int -> rcx "argument with side effect"
+; V54 cse0 [V54,T38] ( 3, 1.50) long -> rax "CSE #05: conservative"
+; V55 cse1 [V55,T41] ( 2, 1 ) int -> rdi "CSE #04: conservative"
+; V56 cse2 [V56,T39] ( 3, 1.50) long -> rax "CSE #03: conservative"
+; V57 cse3 [V57,T04] ( 5, 13 ) int -> [rbp-0x40] spill-single-def "CSE #06: moderate"
+; V58 cse4 [V58,T09] ( 2, 8 ) int -> rcx "CSE #07: moderate"
+; V59 cse5 [V59,T42] ( 2, 1 ) int -> rdi "CSE #01: conservative"
+; V60 rat0 [V60,T18] ( 3, 4 ) byref -> rax "TLS field access"
+; V61 rat1 [V61,T13] ( 3, 6 ) long -> rax "TLS access"
+; V62 rat2 [V62,T12] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V63 rat3 [V63,T30] ( 2, 2 ) long -> rax "TLS field access"
+; V64 rat4 [V64,T31] ( 2, 2 ) long -> rax "TLS access"
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M46002_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 56
- vzeroupper
- lea rbp, [rsp+0x60]
+ sub rsp, 40
+ lea rbp, [rsp+0x50]
mov r15, rdi
mov ebx, esi
- ;; size=27 bbWeight=1 PerfScore 8.25
+ ;; size=24 bbWeight=1 PerfScore 7.25
G_M46002_IG02:
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
- mov gword ptr [rbp-0x48], r14
lea edi, [rbx-0x01]
or edi, 15
xor r13d, r13d
lzcnt r13d, edi
xor r13d, 31
add r13d, -3
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 10
jle G_M46002_IG30
mov rdi, gword ptr [rax+0x08]
mov rax, bword ptr [rdi+0x50]
test rax, rax
je G_M46002_IG30
- ;; size=87 bbWeight=1 PerfScore 19.50
+ ;; size=83 bbWeight=1 PerfScore 18.50
G_M46002_IG03:
mov r12, gword ptr [rax+0x10]
test r12, r12
je SHORT G_M46002_IG05
;; size=9 bbWeight=1 PerfScore 3.25
G_M46002_IG04:
mov edi, dword ptr [r12+0x08]
cmp edi, r13d
jbe SHORT G_M46002_IG05
mov eax, r13d
shl rax, 4
mov rcx, gword ptr [r12+rax+0x10]
test rcx, rcx
jne G_M46002_IG26
;; size=31 bbWeight=0.50 PerfScore 3.62
G_M46002_IG05:
- mov gword ptr [rbp-0x40], r15
mov r12, gword ptr [r15+0x10]
mov edi, dword ptr [r12+0x08]
cmp edi, r13d
ja SHORT G_M46002_IG09
- mov r15, gword ptr [rbp-0x40]
test ebx, ebx
je SHORT G_M46002_IG06
mov edi, ebx
mov rsi, 0xD1FFAB1E ; 'minimumLength'
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
jmp G_M46002_IG22
- ;; size=55 bbWeight=0.50 PerfScore 7.12
+ ;; size=47 bbWeight=0.50 PerfScore 6.12
G_M46002_IG06:
mov rax, 0xD1FFAB1E ; global ptr
test byte ptr [rax], 1
je G_M46002_IG31
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M46002_IG07:
mov rax, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[ubyte]:Value
mov rax, gword ptr [rax]
;; size=13 bbWeight=0.50 PerfScore 1.12
G_M46002_IG08:
- add rsp, 56
+ add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M46002_IG09:
- mov r15, gword ptr [rbp-0x40]
- mov eax, r13d
- mov rax, gword ptr [r12+8*rax+0x10]
- test rax, rax
+ mov edi, r13d
+ mov rdi, gword ptr [r12+8*rdi+0x10]
+ test rdi, rdi
je G_M46002_IG21
- mov gword ptr [rbp-0x40], r15
- mov r12, gword ptr [rax+0x08]
- mov gword ptr [rbp-0x50], r12
+ mov r12, gword ptr [rdi+0x08]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=43 bbWeight=0.50 PerfScore 4.38
+ call rax
+ add rax, 76
+ mov ebx, dword ptr [rax+0x10]
+ lea ecx, [rbx-0x01]
+ mov dword ptr [rax+0x10], ecx
+ movzx rax, bx
+ test eax, eax
+ je SHORT G_M46002_IG10
+ sar ebx, 16
+ jmp SHORT G_M46002_IG11
+ ;; size=68 bbWeight=0.50 PerfScore 8.38
G_M46002_IG10:
- call rax ; Interop+Sys:SchedGetCpu():int
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
mov ebx, eax
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- jne G_M46002_IG32
- ;; size=23 bbWeight=0.50 PerfScore 3.75
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
G_M46002_IG11:
mov rax, 0xD1FFAB1E ; global ptr
test byte ptr [rax], 1
- je G_M46002_IG33
+ je G_M46002_IG32
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M46002_IG12:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
mov eax, ebx
xor edx, edx
div edx:eax, dword ptr [rdi]
mov ebx, edx
- xor r15d, r15d
- mov r12, gword ptr [rbp-0x50]
- mov r14d, dword ptr [r12+0x08]
- test r14d, r14d
+ xor eax, eax
+ mov dword ptr [rbp-0x3C], eax
+ mov ecx, dword ptr [r12+0x08]
+ mov dword ptr [rbp-0x40], ecx
+ test ecx, ecx
jle SHORT G_M46002_IG18
- ;; size=35 bbWeight=0.50 PerfScore 15.25
+ ;; size=35 bbWeight=0.50 PerfScore 15.75
G_M46002_IG13:
- cmp ebx, r14d
- jae G_M46002_IG34
+ cmp ebx, ecx
+ jae G_M46002_IG33
mov edi, ebx
- mov rax, gword ptr [r12+8*rdi+0x10]
- mov gword ptr [rbp-0x60], rax
- cmp byte ptr [rax], al
- xor rcx, rcx
- mov gword ptr [rbp-0x58], rcx
- mov rdi, rax
+ mov rdx, gword ptr [r12+8*rdi+0x10]
+ mov gword ptr [rbp-0x50], rdx
+ cmp byte ptr [rdx], dl
+ xor rsi, rsi
+ mov gword ptr [rbp-0x48], rsi
+ mov rdi, rdx
call System.Threading.Monitor:Enter(System.Object)
- mov rax, gword ptr [rbp-0x60]
- mov rdi, gword ptr [rax+0x08]
- mov ecx, dword ptr [rax+0x10]
- dec ecx
- mov edx, dword ptr [rdi+0x08]
- cmp edx, ecx
+ mov rdx, gword ptr [rbp-0x50]
+ mov rdi, gword ptr [rdx+0x08]
+ mov eax, dword ptr [rdx+0x10]
+ dec eax
+ mov ecx, dword ptr [rdi+0x08]
+ cmp ecx, eax
jbe SHORT G_M46002_IG15
- ;; size=56 bbWeight=4 PerfScore 74.00
+ ;; size=55 bbWeight=4 PerfScore 74.00
G_M46002_IG14:
- mov edx, ecx
- mov rdx, gword ptr [rdi+8*rdx+0x10]
- mov gword ptr [rbp-0x58], rdx
- mov esi, ecx
+ mov ecx, eax
+ mov rsi, gword ptr [rdi+8*rcx+0x10]
+ mov gword ptr [rbp-0x48], rsi
+ mov esi, eax
xor r8, r8
mov gword ptr [rdi+8*rsi+0x10], r8
- mov dword ptr [rax+0x10], ecx
+ mov dword ptr [rdx+0x10], eax
;; size=24 bbWeight=2 PerfScore 11.50
G_M46002_IG15:
- mov rdi, rax
+ mov rdi, rdx
call System.Threading.Monitor:Exit(System.Object)
- mov rsi, gword ptr [rbp-0x58]
+ mov rsi, gword ptr [rbp-0x48]
test rsi, rsi
jne SHORT G_M46002_IG19
inc ebx
- cmp r14d, ebx
+ mov esi, dword ptr [rbp-0x40]
+ cmp esi, ebx
jne SHORT G_M46002_IG17
- ;; size=24 bbWeight=4 PerfScore 20.00
+ ;; size=26 bbWeight=4 PerfScore 24.00
G_M46002_IG16:
xor ebx, ebx
;; size=2 bbWeight=2 PerfScore 0.50
G_M46002_IG17:
- inc r15d
- cmp r14d, r15d
+ mov eax, dword ptr [rbp-0x3C]
+ inc eax
+ cmp esi, eax
+ mov dword ptr [rbp-0x3C], eax
+ mov ecx, esi
jg SHORT G_M46002_IG13
- ;; size=8 bbWeight=4 PerfScore 6.00
+ ;; size=14 bbWeight=4 PerfScore 15.00
G_M46002_IG18:
xor rcx, rcx
jmp SHORT G_M46002_IG20
;; size=4 bbWeight=0.50 PerfScore 1.12
G_M46002_IG19:
mov rcx, rsi
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M46002_IG20:
mov r12, rcx
test r12, r12
- mov r15, gword ptr [rbp-0x40]
jne G_M46002_IG25
- ;; size=16 bbWeight=0.50 PerfScore 1.25
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
G_M46002_IG21:
mov esi, 16
shlx ebx, esi, r13d
;; size=10 bbWeight=0.50 PerfScore 0.38
G_M46002_IG22:
cmp ebx, 0x800
jl SHORT G_M46002_IG23
mov esi, ebx
mov rdi, 0xD1FFAB1E ; ubyte[]
mov edx, 16
call System.GC:AllocateNewArray(long,int,int):System.Array
mov r12, rax
jmp SHORT G_M46002_IG24
;; size=35 bbWeight=0.50 PerfScore 2.62
G_M46002_IG23:
movsxd rsi, ebx
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
mov r12, rax
;; size=21 bbWeight=0.50 PerfScore 0.88
G_M46002_IG24:
- mov r14, gword ptr [rbp-0x48]
cmp byte ptr [r14+0x9D], 0
je G_M46002_IG27
cmp byte ptr [r12], r12b
mov rdi, r12
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ebx, eax
mov eax, dword ptr [r12+0x08]
mov dword ptr [rbp-0x2C], eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov esi, ebx
mov edx, dword ptr [rbp-0x2C]
mov rdi, r14
mov r8d, -1
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
mov eax, dword ptr [r12+0x08]
mov dword ptr [rbp-0x30], eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov rdi, gword ptr [r15+0x10]
mov r9d, 1
mov esi, 2
cmp dword ptr [rdi+0x08], r13d
cmovg r9d, esi
mov rdi, r14
mov esi, ebx
mov edx, dword ptr [rbp-0x30]
mov r8d, -1
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
jmp G_M46002_IG27
- ;; size=148 bbWeight=0.50 PerfScore 18.12
+ ;; size=144 bbWeight=0.50 PerfScore 17.62
G_M46002_IG25:
- mov r14, gword ptr [rbp-0x48]
cmp byte ptr [r14+0x9D], 0
je G_M46002_IG27
mov rdi, r12
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ebx, eax
mov eax, dword ptr [r12+0x08]
mov dword ptr [rbp-0x34], eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov esi, ebx
mov edx, dword ptr [rbp-0x34]
mov rdi, r14
mov r8d, r13d
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
jmp SHORT G_M46002_IG27
- ;; size=71 bbWeight=0.50 PerfScore 9.00
+ ;; size=67 bbWeight=0.50 PerfScore 8.50
G_M46002_IG26:
mov rbx, rcx
xor rdi, rdi
mov gword ptr [r12+rax+0x10], rdi
- mov r14, gword ptr [rbp-0x48]
cmp byte ptr [r14+0x9D], 0
je SHORT G_M46002_IG29
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov r12d, eax
mov eax, dword ptr [rbx+0x08]
mov dword ptr [rbp-0x38], eax
cmp byte ptr [r15], r15b
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov esi, r12d
mov edx, dword ptr [rbp-0x38]
mov rdi, r14
mov r8d, r13d
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
mov r12, rbx
- ;; size=81 bbWeight=0.50 PerfScore 10.38
+ ;; size=77 bbWeight=0.50 PerfScore 9.88
G_M46002_IG27:
mov rax, r12
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M46002_IG28:
- add rsp, 56
+ add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M46002_IG29:
mov r12, rbx
jmp SHORT G_M46002_IG27
;; size=5 bbWeight=0.25 PerfScore 0.56
G_M46002_IG30:
mov edi, 10
call CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
jmp G_M46002_IG03
;; size=15 bbWeight=0 PerfScore 0.00
G_M46002_IG31:
mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[ubyte]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M46002_IG07
;; size=20 bbWeight=0 PerfScore 0.00
G_M46002_IG32:
- call CORINFO_HELP_POLL_GC
- jmp G_M46002_IG11
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M46002_IG33:
mov rdi, 0xD1FFAB1E ; System.Buffers.SharedArrayPoolStatics
call CORINFO_HELP_GET_NONGCSTATIC_BASE
jmp G_M46002_IG12
;; size=20 bbWeight=0 PerfScore 0.00
-G_M46002_IG34:
+G_M46002_IG33:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 973, prolog size 27, PerfScore 231.31, instruction count 249, allocated bytes for code 973 (MethodHash=a1ab4c4d) for method System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (FullOpts)
+; Total bytes of code 955, prolog size 24, PerfScore 241.81, instruction count 250, allocated bytes for code 955 (MethodHash=a1ab4c4d) for method System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (FullOpts)
-36 (-5.98 % of base) - System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,long,long):this
; Assembly listing for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,long,long):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; 9 single block inlinees; 10 inlinees without PGO data
+; 0 inlinees with PGO data; 8 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 3, 3 ) ref -> [rbp-0x30] this class-hnd single-def <System.Threading.Timer>
+; V00 this [V00,T06] ( 3, 3 ) ref -> r13 this class-hnd single-def <System.Threading.Timer>
; V01 arg1 [V01,T04] ( 4, 4 ) ref -> r14 class-hnd single-def <System.Threading.TimerCallback>
-; V02 arg2 [V02,T08] ( 3, 3 ) ref -> r12 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T07] ( 3, 3 ) ref -> r12 class-hnd single-def <System.Object>
; V03 arg3 [V03,T01] ( 8, 5.50) long -> rbx single-def
; V04 arg4 [V04,T02] ( 8, 5 ) long -> r15 single-def
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg"
-;* V07 tmp2 [V07,T14] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V07 tmp2 [V07,T18] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg"
-;* V09 tmp4 [V09,T15] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V09 tmp4 [V09,T19] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg"
-;* V11 tmp6 [V11,T12] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V11 tmp6 [V11,T16] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg"
-;* V13 tmp8 [V13,T13] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V13 tmp8 [V13,T17] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V15 tmp10 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V16 tmp11 [V16,T00] ( 8, 15 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+; V16 tmp11 [V16,T00] ( 8, 15 ) ref -> [rbp-0x30] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
; V17 tmp12 [V17,T05] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
-; V18 tmp13 [V18,T10] ( 2, 4 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-; V19 tmp14 [V19,T03] ( 4, 8 ) long -> rdi "impAppendStmt"
-; V20 tmp15 [V20,T09] ( 3, 5 ) int -> rbx "Inlining Arg"
+; V18 tmp13 [V18,T09] ( 2, 4 ) ref -> r12 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V19 tmp14 [V19 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
+; V20 tmp15 [V20,T08] ( 3, 5 ) int -> rbx "Inlining Arg"
;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V23 tmp18 [V23,T16] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V24 tmp19 [V24,T17] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V25 tmp20 [V25,T18] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V26 tmp21 [V26,T19] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V27 tmp22 [V27,T06] ( 3, 6 ) long -> rdi "index expr"
-; V28 cse0 [V28,T11] ( 2, 2 ) ref -> r12 "CSE #01: moderate"
+; V23 tmp18 [V23,T14] ( 3, 2 ) int -> rcx "Inline return value spill temp"
+; V24 tmp19 [V24,T03] ( 4, 7 ) int -> rcx "dup spill"
+;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V26 tmp21 [V26,T20] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V27 tmp22 [V27,T21] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V28 tmp23 [V28,T22] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V29 tmp24 [V29,T23] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V30 tmp25 [V30,T10] ( 2, 4 ) long -> rdi "index expr"
+; V31 cse0 [V31,T13] ( 3, 3 ) long -> rax "CSE #01: moderate"
+; V32 cse1 [V32,T15] ( 2, 2 ) ref -> r12 "CSE #02: moderate"
+; V33 rat0 [V33,T11] ( 2, 4 ) long -> rax "TLS field access"
+; V34 rat1 [V34,T12] ( 2, 4 ) long -> rax "TLS access"
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M46466_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- vzeroupper
- lea rbp, [rsp+0x40]
- mov gword ptr [rbp-0x30], rdi
+ push rax
+ lea rbp, [rsp+0x30]
+ mov r13, rdi
mov r14, rsi
mov r12, rdx
mov rbx, rcx
mov r15, r8
- ;; size=38 bbWeight=1 PerfScore 9.75
+ ;; size=31 bbWeight=1 PerfScore 8.75
G_M46466_IG02:
cmp rbx, -1
jl G_M46466_IG16
cmp r15, -1
jl G_M46466_IG15
mov edi, 0xD1FFAB1E
cmp rbx, rdi
jl SHORT G_M46466_IG04
;; size=30 bbWeight=1 PerfScore 4.00
G_M46466_IG03:
mov edi, 0xD1FFAB1E
cmp rbx, rdi
- jg G_M46466_IG12
+ jg G_M46466_IG13
;; size=14 bbWeight=0.50 PerfScore 0.75
G_M46466_IG04:
mov edi, 0xD1FFAB1E
cmp r15, rdi
jl SHORT G_M46466_IG06
;; size=10 bbWeight=1 PerfScore 1.50
G_M46466_IG05:
mov edi, 0xD1FFAB1E
cmp r15, rdi
- jg G_M46466_IG13
+ jg G_M46466_IG14
;; size=14 bbWeight=0.50 PerfScore 0.75
G_M46466_IG06:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; 'callback'
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov rdi, 0xD1FFAB1E ; System.Threading.TimerQueueTimer
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x38], rax
+ mov gword ptr [rbp-0x30], rax
lea rdi, bword ptr [rax+0x20]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- mov r14, gword ptr [rbp-0x38]
+ mov r14, gword ptr [rbp-0x30]
lea rdi, bword ptr [r14+0x28]
mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [r14+0x48], -1
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
call [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
lea rdi, bword ptr [r14+0x30]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- mov rax, 0xD1FFAB1E ; const ptr
- mov r12, gword ptr [rax]
- mov gword ptr [rbp-0x40], r12
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov r12, gword ptr [rdi]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=131 bbWeight=1 PerfScore 20.00
+ call rax
+ add rax, 76
+ mov ecx, dword ptr [rax+0x10]
+ lea edx, [rcx-0x01]
+ mov dword ptr [rax+0x10], edx
+ movzx rax, cx
+ test eax, eax
+ je SHORT G_M46466_IG08
+ ;; size=159 bbWeight=1 PerfScore 27.50
G_M46466_IG07:
- call rax ; Interop+Sys:SchedGetCpu():int
- mov edi, eax
- mov rsi, rdi
- sar rsi, 63
- and rsi, 15
- add rsi, rdi
- and rsi, -16
- sub rdi, rsi
- cmp rdi, 16
- jae G_M46466_IG17
- mov r12, gword ptr [rbp-0x40]
+ sar ecx, 16
+ jmp SHORT G_M46466_IG09
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M46466_IG08:
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov ecx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M46466_IG09:
+ mov edi, ecx
+ and rdi, 15
mov rsi, gword ptr [r12+8*rdi+0x10]
- mov r14, gword ptr [rbp-0x38]
lea rdi, bword ptr [r14+0x08]
call CORINFO_HELP_ASSIGN_REF
- mov rdi, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rdi], 0
- jne G_M46466_IG14
- ;; size=76 bbWeight=1 PerfScore 16.00
-G_M46466_IG08:
cmp ebx, -1
- je SHORT G_M46466_IG10
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M46466_IG09:
+ je SHORT G_M46466_IG11
+ ;; size=25 bbWeight=1 PerfScore 5.25
+G_M46466_IG10:
mov rdi, r14
mov esi, ebx
mov edx, r15d
mov rax, 0xD1FFAB1E ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
call [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
;; size=20 bbWeight=0.50 PerfScore 2.00
-G_M46466_IG10:
+G_M46466_IG11:
mov rdi, 0xD1FFAB1E ; System.Threading.TimerHolder
call CORINFO_HELP_NEWFAST
mov r15, rax
lea rdi, bword ptr [r15+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- mov r13, gword ptr [rbp-0x30]
lea rdi, bword ptr [r13+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
nop
- ;; size=47 bbWeight=1 PerfScore 6.25
-G_M46466_IG11:
- add rsp, 24
+ ;; size=43 bbWeight=1 PerfScore 5.25
+G_M46466_IG12:
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M46466_IG12:
+G_M46466_IG13:
mov edi, 0x1723A
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rdi, rbx
mov esi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
int3
;; size=44 bbWeight=0 PerfScore 0.00
-G_M46466_IG13:
+G_M46466_IG14:
mov edi, 0x1720A
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rdi, r15
mov esi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
int3
;; size=44 bbWeight=0 PerfScore 0.00
-G_M46466_IG14:
- call CORINFO_HELP_POLL_GC
- jmp G_M46466_IG08
- ;; size=10 bbWeight=0 PerfScore 0.00
G_M46466_IG15:
mov edi, 0x1720A
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rdi, r15
mov rsi, -1
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
int3
;; size=49 bbWeight=0 PerfScore 0.00
G_M46466_IG16:
mov edi, 0x1723A
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rdi, rbx
mov rsi, -1
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
int3
;; size=49 bbWeight=0 PerfScore 0.00
-G_M46466_IG17:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 602, prolog size 22, PerfScore 66.50, instruction count 138, allocated bytes for code 602 (MethodHash=1cc84a7d) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,long,long):this (FullOpts)
+; Total bytes of code 566, prolog size 16, PerfScore 63.00, instruction count 132, allocated bytes for code 566 (MethodHash=1cc84a7d) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,long,long):this (FullOpts)
-36 (-4.36 % of base) - System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):this
; Assembly listing for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):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; 9 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 8 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 3, 3 ) ref -> [rbp-0x30] this class-hnd single-def <System.Threading.Timer>
+; V00 this [V00,T06] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Threading.Timer>
; V01 arg1 [V01,T02] ( 4, 4 ) ref -> rbx class-hnd single-def <System.Threading.TimerCallback>
-; V02 arg2 [V02,T08] ( 3, 3 ) ref -> r14 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T07] ( 3, 3 ) ref -> r14 class-hnd single-def <System.Object>
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.TimeSpan>
;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.TimeSpan>
-; V05 loc0 [V05,T05] ( 7, 4.50) long -> r13
-; V06 loc1 [V06,T06] ( 7, 4 ) long -> r12
+; V05 loc0 [V05,T04] ( 7, 4.50) long -> r13
+; V06 loc1 [V06,T05] ( 7, 4 ) long -> r12
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T20] ( 6, 4.50) double -> mm0 "Inline return value spill temp"
-; V09 tmp2 [V09,T24] ( 4, 3 ) double -> mm0 "Inline stloc first use temp"
+; V08 tmp1 [V08,T24] ( 6, 4.50) double -> mm0 "Inline return value spill temp"
+; V09 tmp2 [V09,T28] ( 4, 3 ) double -> mm0 "Inline stloc first use temp"
;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg"
-;* V11 tmp4 [V11,T16] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V11 tmp4 [V11,T20] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V12 tmp5 [V12 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg"
-;* V13 tmp6 [V13,T14] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V14 tmp7 [V14,T21] ( 6, 4.50) double -> mm0 "Inline return value spill temp"
-; V15 tmp8 [V15,T25] ( 4, 3 ) double -> mm0 "Inline stloc first use temp"
+;* V13 tmp6 [V13,T18] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V14 tmp7 [V14,T25] ( 6, 4.50) double -> mm0 "Inline return value spill temp"
+; V15 tmp8 [V15,T29] ( 4, 3 ) double -> mm0 "Inline stloc first use temp"
;* V16 tmp9 [V16 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg"
-;* V17 tmp10 [V17,T17] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V17 tmp10 [V17,T21] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V18 tmp11 [V18 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg"
-;* V19 tmp12 [V19,T15] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V19 tmp12 [V19,T19] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V20 tmp13 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V21 tmp14 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V22 tmp15 [V22,T00] ( 8, 15 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+; V22 tmp15 [V22,T00] ( 8, 15 ) ref -> [rbp-0x30] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
; V23 tmp16 [V23,T03] ( 3, 6 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
-; V24 tmp17 [V24,T10] ( 2, 4 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-; V25 tmp18 [V25,T01] ( 4, 8 ) long -> rdi "impAppendStmt"
-; V26 tmp19 [V26,T09] ( 3, 5 ) int -> r13 "Inlining Arg"
+; V24 tmp17 [V24,T09] ( 2, 4 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V25 tmp18 [V25 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
+; V26 tmp19 [V26,T08] ( 3, 5 ) int -> r13 "Inlining Arg"
;* V27 tmp20 [V27 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V28 tmp21 [V28 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V29 tmp22 [V29,T11] ( 2, 2 ) long -> rcx single-def "field V03._ticks (fldOffset=0x0)" P-INDEP
-; V30 tmp23 [V30,T12] ( 2, 2 ) long -> r8 single-def "field V04._ticks (fldOffset=0x0)" P-INDEP
-; V31 tmp24 [V31,T27] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V32 tmp25 [V32,T28] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V33 tmp26 [V33,T29] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V34 tmp27 [V34,T30] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V35 tmp28 [V35,T04] ( 3, 6 ) long -> rdi "index expr"
-; V36 cse0 [V36,T13] ( 2, 2 ) ref -> r14 "CSE #04: moderate"
-; V37 cse1 [V37,T22] ( 5, 4 ) double -> mm2 "CSE #01: aggressive"
-; V38 cse2 [V38,T23] ( 6, 3 ) double -> mm3 multi-def "CSE #02: moderate"
-; V39 cse3 [V39,T26] ( 3, 3 ) double -> mm1 "CSE #03: moderate"
-; V40 rat0 [V40,T18] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
-; V41 rat1 [V41,T19] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V29 tmp22 [V29,T16] ( 3, 2 ) int -> rcx "Inline return value spill temp"
+; V30 tmp23 [V30,T01] ( 4, 7 ) int -> rcx "dup spill"
+;* V31 tmp24 [V31 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V32 tmp25 [V32,T10] ( 2, 2 ) long -> rcx single-def "field V03._ticks (fldOffset=0x0)" P-INDEP
+; V33 tmp26 [V33,T11] ( 2, 2 ) long -> r8 single-def "field V04._ticks (fldOffset=0x0)" P-INDEP
+; V34 tmp27 [V34,T31] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V35 tmp28 [V35,T32] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V36 tmp29 [V36,T33] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V37 tmp30 [V37,T34] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V38 tmp31 [V38,T12] ( 2, 4 ) long -> rdi "index expr"
+; V39 cse0 [V39,T15] ( 3, 3 ) long -> rax "CSE #04: moderate"
+; V40 cse1 [V40,T17] ( 2, 2 ) ref -> r14 "CSE #05: moderate"
+; V41 cse2 [V41,T26] ( 5, 4 ) double -> mm2 "CSE #01: moderate"
+; V42 cse3 [V42,T27] ( 6, 3 ) double -> mm3 multi-def "CSE #02: moderate"
+; V43 cse4 [V43,T30] ( 3, 3 ) double -> mm1 "CSE #03: moderate"
+; V44 rat0 [V44,T13] ( 2, 4 ) long -> rax "TLS field access"
+; V45 rat1 [V45,T14] ( 2, 4 ) long -> rax "TLS access"
+; V46 rat2 [V46,T22] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V47 rat3 [V47,T23] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M54850_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- vzeroupper
- lea rbp, [rsp+0x40]
- mov gword ptr [rbp-0x30], rdi
+ push rax
+ lea rbp, [rsp+0x30]
+ mov r15, rdi
mov rbx, rsi
mov r14, rdx
- ;; size=32 bbWeight=1 PerfScore 9.25
+ ;; size=25 bbWeight=1 PerfScore 8.25
G_M54850_IG02:
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rcx
vmovsd xmm1, qword ptr [reloc @RWD00]
vdivsd xmm0, xmm0, xmm1
vmovsd xmm2, qword ptr [reloc @RWD08]
vucomisd xmm0, xmm2
ja SHORT G_M54850_IG05
;; size=35 bbWeight=1 PerfScore 27.33
G_M54850_IG03:
vmovsd xmm3, qword ptr [reloc @RWD16]
vucomisd xmm3, xmm0
ja SHORT G_M54850_IG04
jmp SHORT G_M54850_IG06
;; size=16 bbWeight=0.50 PerfScore 4.00
G_M54850_IG04:
vmovaps xmm0, xmm3
jmp SHORT G_M54850_IG06
;; size=6 bbWeight=0.50 PerfScore 1.12
G_M54850_IG05:
vmovaps xmm0, xmm2
;; size=4 bbWeight=0.50 PerfScore 0.12
G_M54850_IG06:
vmovddup xmm3, xmm0
vmovddup xmm4, xmm0
vmovddup xmm0, xmm0
vcmppd xmm3, xmm4, xmm3, 0
vandpd xmm0, xmm3, xmm0
vcmppd xmm3, xmm0, xmmword ptr [reloc @RWD32], 13
vcvttsd2si rdi, xmm0
vmovd xmm0, rdi
vpbroadcastq xmm0, xmm0
vpblendvb xmm0, xmm0, xmmword ptr [reloc @RWD48], xmm3
vmovd r13, xmm0
cmp r13, -1
jl G_M54850_IG24
mov edi, 0xD1FFAB1E
cmp r13, rdi
jl SHORT G_M54850_IG08
;; size=80 bbWeight=1 PerfScore 26.08
G_M54850_IG07:
mov edi, 0xD1FFAB1E
cmp r13, rdi
- jg G_M54850_IG20
+ jg G_M54850_IG21
;; size=14 bbWeight=0.50 PerfScore 0.75
G_M54850_IG08:
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, r8
vdivsd xmm0, xmm0, xmm1
vucomisd xmm0, xmm2
ja SHORT G_M54850_IG11
;; size=19 bbWeight=1 PerfScore 21.33
G_M54850_IG09:
vmovsd xmm3, qword ptr [reloc @RWD16]
vucomisd xmm3, xmm0
ja SHORT G_M54850_IG10
jmp SHORT G_M54850_IG12
;; size=16 bbWeight=0.50 PerfScore 4.00
G_M54850_IG10:
vmovaps xmm0, xmm3
jmp SHORT G_M54850_IG12
;; size=6 bbWeight=0.50 PerfScore 1.12
G_M54850_IG11:
vmovaps xmm0, xmm2
;; size=4 bbWeight=0.50 PerfScore 0.12
G_M54850_IG12:
vmovddup xmm1, xmm0
vmovddup xmm2, xmm0
vmovddup xmm0, xmm0
vcmppd xmm1, xmm2, xmm1, 0
vandpd xmm0, xmm1, xmm0
vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD32], 13
vcvttsd2si rdi, xmm0
vmovd xmm0, rdi
vpbroadcastq xmm0, xmm0
vpblendvb xmm0, xmm0, xmmword ptr [reloc @RWD48], xmm1
vmovd r12, xmm0
cmp r12, -1
jl G_M54850_IG23
mov edi, 0xD1FFAB1E
cmp r12, rdi
jl SHORT G_M54850_IG14
;; size=80 bbWeight=1 PerfScore 26.08
G_M54850_IG13:
mov edi, 0xD1FFAB1E
cmp r12, rdi
- jg G_M54850_IG21
+ jg G_M54850_IG22
;; size=14 bbWeight=0.50 PerfScore 0.75
G_M54850_IG14:
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; 'callback'
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov rdi, 0xD1FFAB1E ; System.Threading.TimerQueueTimer
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x38], rax
+ mov gword ptr [rbp-0x30], rax
lea rdi, bword ptr [rax+0x20]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
- mov rbx, gword ptr [rbp-0x38]
+ mov rbx, gword ptr [rbp-0x30]
lea rdi, bword ptr [rbx+0x28]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [rbx+0x48], -1
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
call [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
lea rdi, bword ptr [rbx+0x30]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- mov rax, 0xD1FFAB1E ; const ptr
- mov r14, gword ptr [rax]
- mov gword ptr [rbp-0x40], r14
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov r14, gword ptr [rdi]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=131 bbWeight=1 PerfScore 20.00
+ call rax
+ add rax, 76
+ mov ecx, dword ptr [rax+0x10]
+ lea edx, [rcx-0x01]
+ mov dword ptr [rax+0x10], edx
+ movzx rax, cx
+ test eax, eax
+ je SHORT G_M54850_IG16
+ ;; size=159 bbWeight=1 PerfScore 27.50
G_M54850_IG15:
- call rax ; Interop+Sys:SchedGetCpu():int
- mov edi, eax
- mov rsi, rdi
- sar rsi, 63
- and rsi, 15
- add rsi, rdi
- and rsi, -16
- sub rdi, rsi
- cmp rdi, 16
- jae G_M54850_IG25
- mov r14, gword ptr [rbp-0x40]
+ sar ecx, 16
+ jmp SHORT G_M54850_IG17
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M54850_IG16:
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov ecx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M54850_IG17:
+ mov edi, ecx
+ and rdi, 15
mov rsi, gword ptr [r14+8*rdi+0x10]
- mov rbx, gword ptr [rbp-0x38]
lea rdi, bword ptr [rbx+0x08]
call CORINFO_HELP_ASSIGN_REF
- mov rdi, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rdi], 0
- jne G_M54850_IG22
- ;; size=76 bbWeight=1 PerfScore 16.00
-G_M54850_IG16:
cmp r13d, -1
- je SHORT G_M54850_IG18
- ;; size=6 bbWeight=1 PerfScore 1.25
-G_M54850_IG17:
+ je SHORT G_M54850_IG19
+ ;; size=26 bbWeight=1 PerfScore 5.25
+G_M54850_IG18:
mov rdi, rbx
mov esi, r13d
mov edx, r12d
mov rax, 0xD1FFAB1E ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
call [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
;; size=21 bbWeight=0.50 PerfScore 2.00
-G_M54850_IG18:
+G_M54850_IG19:
mov rdi, 0xD1FFAB1E ; System.Threading.TimerHolder
call CORINFO_HELP_NEWFAST
mov r12, rax
lea rdi, bword ptr [r12+0x08]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
- mov r15, gword ptr [rbp-0x30]
lea rdi, bword ptr [r15+0x08]
mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
nop
- ;; size=48 bbWeight=1 PerfScore 6.25
-G_M54850_IG19:
- add rsp, 24
+ ;; size=44 bbWeight=1 PerfScore 5.25
+G_M54850_IG20:
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M54850_IG20:
+G_M54850_IG21:
mov edi, 0x1723A
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rdi, r13
mov esi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
int3
;; size=44 bbWeight=0 PerfScore 0.00
-G_M54850_IG21:
+G_M54850_IG22:
mov edi, 0x1720A
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rdi, r12
mov esi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
int3
;; size=44 bbWeight=0 PerfScore 0.00
-G_M54850_IG22:
- call CORINFO_HELP_POLL_GC
- jmp G_M54850_IG16
- ;; size=10 bbWeight=0 PerfScore 0.00
G_M54850_IG23:
mov edi, 0x1720A
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rdi, r12
mov rsi, -1
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
int3
;; size=49 bbWeight=0 PerfScore 0.00
G_M54850_IG24:
mov edi, 0x1723A
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rdi, r13
mov rsi, -1
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
int3
;; size=49 bbWeight=0 PerfScore 0.00
-G_M54850_IG25:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
RWD00 dq 40C3880000000000h ; 10000
RWD08 dq 430A36E2EB1C4328h ; 9.22337204e+14
RWD16 dq C30A36E2EB1C4328h ; -9.22337204e+14
RWD24 dd 00000000h, 00000000h
RWD32 dq 43E0000000000000h, 43E0000000000000h
RWD48 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 825, prolog size 22, PerfScore 171.83, instruction count 184, allocated bytes for code 825 (MethodHash=a03129bd) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):this (FullOpts)
+; Total bytes of code 789, prolog size 16, PerfScore 168.33, instruction count 178, allocated bytes for code 789 (MethodHash=a03129bd) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):this (FullOpts)
-36 (-13.74 % of base) - System.Threading.TimerQueueTimer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint,ubyte):this
; Assembly listing for method System.Threading.TimerQueueTimer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint,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; 4 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 7 ) ref -> [rbp-0x30] this class-hnd single-def <System.Threading.TimerQueueTimer>
-; V01 arg1 [V01,T04] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Threading.TimerCallback>
-; V02 arg2 [V02,T05] ( 3, 3 ) ref -> r14 class-hnd single-def <System.Object>
-; V03 arg3 [V03,T03] ( 4, 3.50) int -> r15 single-def
-; V04 arg4 [V04,T07] ( 3, 2.50) int -> r12 single-def
-; V05 arg5 [V05,T06] ( 3, 3 ) ubyte -> r13 single-def
+; V00 this [V00,T00] ( 8, 7 ) ref -> rbx this class-hnd single-def <System.Threading.TimerQueueTimer>
+; V01 arg1 [V01,T03] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Threading.TimerCallback>
+; V02 arg2 [V02,T04] ( 3, 3 ) ref -> r14 class-hnd single-def <System.Object>
+; V03 arg3 [V03,T02] ( 4, 3.50) int -> r15 single-def
+; V04 arg4 [V04,T06] ( 3, 2.50) int -> r12 single-def
+; V05 arg5 [V05,T05] ( 3, 3 ) ubyte -> r13 single-def
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T08] ( 2, 4 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-; V08 tmp2 [V08,T01] ( 4, 8 ) long -> rdi "impAppendStmt"
+; V07 tmp1 [V07,T07] ( 2, 4 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V09 tmp3 [V09 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 6 ) long -> rdi "index expr"
-; V11 cse0 [V11,T09] ( 2, 2 ) ref -> r14 "CSE #01: moderate"
+; V10 tmp4 [V10,T12] ( 3, 2 ) int -> rcx "Inline return value spill temp"
+; V11 tmp5 [V11,T01] ( 4, 7 ) int -> rcx "dup spill"
+;* V12 tmp6 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V13 tmp7 [V13,T08] ( 2, 4 ) long -> rdi "index expr"
+; V14 cse0 [V14,T11] ( 3, 3 ) long -> rax "CSE #01: moderate"
+; V15 cse1 [V15,T13] ( 2, 2 ) ref -> r14 "CSE #02: moderate"
+; V16 rat0 [V16,T09] ( 2, 4 ) long -> rax "TLS field access"
+; V17 rat1 [V17,T10] ( 2, 4 ) long -> rax "TLS access"
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M3687_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- vzeroupper
- lea rbp, [rsp+0x40]
+ push rax
+ lea rbp, [rsp+0x30]
mov rbx, rdi
mov r14, rdx
mov r15d, ecx
mov r12d, r8d
mov r13d, r9d
- ;; size=37 bbWeight=1 PerfScore 9.00
+ ;; size=31 bbWeight=1 PerfScore 8.75
G_M3687_IG02:
lea rdi, bword ptr [rbx+0x20]
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [rbx+0x28]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [rbx+0x48], -1
test r13b, r13b
- je G_M3687_IG06
- ;; size=38 bbWeight=1 PerfScore 5.50
+ je SHORT G_M3687_IG04
+ ;; size=34 bbWeight=1 PerfScore 5.50
G_M3687_IG03:
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
call [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
- mov gword ptr [rbp-0x30], rbx
lea rdi, bword ptr [rbx+0x30]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- ;; size=28 bbWeight=0.50 PerfScore 3.00
+ ;; size=24 bbWeight=0.50 PerfScore 2.50
G_M3687_IG04:
- mov rax, 0xD1FFAB1E ; const ptr
- mov r14, gword ptr [rax]
- mov gword ptr [rbp-0x38], r14
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov r14, gword ptr [rdi]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=27 bbWeight=1 PerfScore 3.50
+ call rax
+ add rax, 76
+ mov ecx, dword ptr [rax+0x10]
+ lea edx, [rcx-0x01]
+ mov dword ptr [rax+0x10], edx
+ movzx rax, cx
+ test eax, eax
+ je SHORT G_M3687_IG06
+ ;; size=55 bbWeight=1 PerfScore 11.00
G_M3687_IG05:
- call rax ; Interop+Sys:SchedGetCpu():int
- mov edi, eax
- mov rsi, rdi
- sar rsi, 63
- and rsi, 15
- add rsi, rdi
- and rsi, -16
- sub rdi, rsi
- cmp rdi, 16
- jae SHORT G_M3687_IG12
- mov r14, gword ptr [rbp-0x38]
+ sar ecx, 16
+ jmp SHORT G_M3687_IG07
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M3687_IG06:
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov ecx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M3687_IG07:
+ mov edi, ecx
+ and rdi, 15
mov rsi, gword ptr [r14+8*rdi+0x10]
- mov rbx, gword ptr [rbp-0x30]
lea rdi, bword ptr [rbx+0x08]
call CORINFO_HELP_ASSIGN_REF
- mov rdi, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rdi], 0
- je SHORT G_M3687_IG07
- jmp SHORT G_M3687_IG11
- ;; size=70 bbWeight=1 PerfScore 18.00
-G_M3687_IG06:
- mov gword ptr [rbp-0x30], rbx
- jmp SHORT G_M3687_IG04
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M3687_IG07:
cmp r15d, -1
je SHORT G_M3687_IG09
- ;; size=6 bbWeight=1 PerfScore 1.25
+ ;; size=26 bbWeight=1 PerfScore 5.25
G_M3687_IG08:
mov rdi, rbx
mov esi, r15d
mov edx, r12d
mov rax, 0xD1FFAB1E ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
call [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
;; size=21 bbWeight=0.50 PerfScore 2.00
G_M3687_IG09:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M3687_IG10:
- add rsp, 24
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M3687_IG11:
- call CORINFO_HELP_POLL_GC
- jmp SHORT G_M3687_IG07
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M3687_IG12:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 262, prolog size 22, PerfScore 48.25, instruction count 73, allocated bytes for code 262 (MethodHash=08a1f198) for method System.Threading.TimerQueueTimer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint,ubyte):this (FullOpts)
+; Total bytes of code 226, prolog size 16, PerfScore 42.50, instruction count 64, allocated bytes for code 226 (MethodHash=08a1f198) for method System.Threading.TimerQueueTimer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint,ubyte):this (FullOpts)
-34 (-3.33 % of base) - System.Threading.Tasks.Task+CancellationPromise`1[double]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this
; Assembly listing for method System.Threading.Tasks.Task+CancellationPromise`1[double]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):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; 28 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 16, 12 ) ref -> [rbp-0x40] this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[double]>
+; V00 this [V00,T00] ( 16, 12 ) ref -> rbx this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[double]>
; V01 arg1 [V01,T01] ( 8, 6 ) ref -> r15 class-hnd single-def <System.Threading.Tasks.Task>
; V02 arg2 [V02,T03] ( 5, 4 ) int -> r14 single-def
; V03 arg3 [V03,T04] ( 5, 3.50) ref -> r13 class-hnd single-def <System.TimeProvider>
; V04 arg4 [V04 ] ( 4, 4 ) struct ( 8) [rbp-0x28] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
;* V05 loc0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Threading.TimerCallback>
; V06 loc1 [V06 ] ( 3, 1 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.AsyncFlowControl>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T08] ( 2, 4 ) ref -> rsi class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V10 tmp3 [V10,T27] ( 0, 0 ) byref -> zero-ref single-def
+;* V10 tmp3 [V10,T31] ( 0, 0 ) byref -> zero-ref single-def
; V11 tmp4 [V11,T09] ( 4, 3.50) ref -> rsi
; V12 tmp5 [V12,T05] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Action`2[System.Object,System.Threading.CancellationToken]>
-; V13 tmp6 [V13,T19] ( 2, 2 ) ref -> r15 class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
-; V14 tmp7 [V14,T15] ( 5, 2.50) ref -> r15
+; V13 tmp6 [V13,T18] ( 2, 2 ) ref -> r15 class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
+; V14 tmp7 [V14,T14] ( 5, 2.50) ref -> r15
;* V15 tmp8 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "folding static readonly field struct" <System.TimeSpan>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.TimeSpan>
-; V17 tmp10 [V17,T02] ( 7, 7 ) ref -> [rbp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+; V17 tmp10 [V17,T02] ( 7, 7 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
; V18 tmp11 [V18,T06] ( 5, 5 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerCallback>
-; V19 tmp12 [V19,T17] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V19 tmp12 [V19,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V20 tmp13 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V21 tmp14 [V21,T10] ( 3, 3 ) byref -> rdi single-def "Inlining Arg"
; V22 tmp15 [V22,T11] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]>
-; V23 tmp16 [V23,T20] ( 2, 2 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-; V24 tmp17 [V24,T07] ( 4, 4 ) long -> rdi "impAppendStmt"
+; V23 tmp16 [V23,T19] ( 2, 2 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V24 tmp17 [V24 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V25 tmp18 [V25 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V26 tmp19 [V26 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V27 tmp20 [V27 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
-;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V30 tmp23 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V31 tmp24 [V31 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-; V33 tmp26 [V33,T13] ( 3, 3 ) long -> rdx "Inlining Arg"
-; V34 tmp27 [V34,T18] ( 4, 2 ) long -> rsi ld-addr-op "Inline ldloca(s) first use temp"
-;* V35 tmp28 [V35 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-; V36 tmp29 [V36 ] ( 2, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V37 tmp30 [V37,T22] ( 2, 2 ) long -> rdi "impAppendStmt"
-;* V38 tmp31 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V39 tmp32 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V40 tmp33 [V40 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V41 tmp34 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+; V26 tmp19 [V26,T26] ( 3, 1.50) int -> rcx "Inline return value spill temp"
+; V27 tmp20 [V27,T07] ( 4, 4 ) int -> rcx "dup spill"
+;* V28 tmp21 [V28 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V29 tmp22 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
+;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V33 tmp26 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V34 tmp27 [V34 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V35 tmp28 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+; V36 tmp29 [V36,T13] ( 3, 3 ) long -> rdx "Inlining Arg"
+; V37 tmp30 [V37,T17] ( 4, 2 ) long -> rsi ld-addr-op "Inline ldloca(s) first use temp"
+;* V38 tmp31 [V38 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
+; V39 tmp32 [V39 ] ( 2, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V40 tmp33 [V40,T21] ( 2, 2 ) long -> rdi "impAppendStmt"
+;* V41 tmp34 [V41 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V42 tmp35 [V42 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V43 tmp36 [V43 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V44 tmp37 [V44 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V45 tmp38 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V46 tmp39 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V47 tmp40 [V47 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V48 tmp41 [V48 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V49 tmp42 [V49 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V51 tmp44 [V51 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V52 tmp45 [V52,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V53 tmp46 [V53 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V54 tmp47 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V55 tmp48 [V55 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V56 tmp49 [V56,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V57 tmp50 [V57 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V58 tmp51 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-; V59 tmp52 [V59,T12] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]>
-;* V60 tmp53 [V60 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
-;* V61 tmp54 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V62 tmp55 [V62 ] ( 4, 4 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
-; V63 tmp56 [V63 ] ( 3, 1 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
-;* V64 tmp57 [V64,T31] ( 0, 0 ) long -> zero-ref "field V15._ticks (fldOffset=0x0)" P-INDEP
-;* V65 tmp58 [V65 ] ( 0, 0 ) long -> zero-ref "field V16._ticks (fldOffset=0x0)" P-INDEP
-;* V66 tmp59 [V66 ] ( 0, 0 ) long -> zero-ref "field V27._lower (fldOffset=0x0)" P-INDEP
-;* V67 tmp60 [V67 ] ( 0, 0 ) long -> zero-ref "field V27._upper (fldOffset=0x8)" P-INDEP
-;* V68 tmp61 [V68 ] ( 0, 0 ) long -> zero-ref "field V28._lower (fldOffset=0x0)" P-INDEP
-;* V69 tmp62 [V69 ] ( 0, 0 ) long -> zero-ref "field V28._upper (fldOffset=0x8)" P-INDEP
-;* V70 tmp63 [V70 ] ( 0, 0 ) long -> zero-ref "field V29._lower (fldOffset=0x0)" P-INDEP
-;* V71 tmp64 [V71 ] ( 0, 0 ) long -> zero-ref "field V29._upper (fldOffset=0x8)" P-INDEP
-;* V72 tmp65 [V72 ] ( 0, 0 ) long -> zero-ref "field V32._lower (fldOffset=0x0)" P-INDEP
-; V73 tmp66 [V73,T16] ( 5, 2.50) long -> rdi "field V32._upper (fldOffset=0x8)" P-INDEP
-;* V74 tmp67 [V74 ] ( 0, 0 ) long -> zero-ref "field V41._lower (fldOffset=0x0)" P-INDEP
-;* V75 tmp68 [V75 ] ( 0, 0 ) long -> zero-ref "field V41._upper (fldOffset=0x8)" P-INDEP
-;* V76 tmp69 [V76 ] ( 0, 0 ) long -> zero-ref "field V45._lower (fldOffset=0x0)" P-INDEP
-;* V77 tmp70 [V77 ] ( 0, 0 ) long -> zero-ref "field V45._upper (fldOffset=0x8)" P-INDEP
-;* V78 tmp71 [V78 ] ( 0, 0 ) long -> zero-ref "field V47._lower (fldOffset=0x0)" P-INDEP
-;* V79 tmp72 [V79 ] ( 0, 0 ) long -> zero-ref "field V47._upper (fldOffset=0x8)" P-INDEP
-;* V80 tmp73 [V80 ] ( 0, 0 ) long -> zero-ref "field V48._lower (fldOffset=0x0)" P-INDEP
-;* V81 tmp74 [V81 ] ( 0, 0 ) long -> zero-ref "field V48._upper (fldOffset=0x8)" P-INDEP
-;* V82 tmp75 [V82 ] ( 0, 0 ) long -> zero-ref "field V50._lower (fldOffset=0x0)" P-INDEP
-;* V83 tmp76 [V83 ] ( 0, 0 ) long -> zero-ref "field V50._upper (fldOffset=0x8)" P-INDEP
-;* V84 tmp77 [V84 ] ( 0, 0 ) long -> zero-ref "field V54._lower (fldOffset=0x0)" P-INDEP
-;* V85 tmp78 [V85 ] ( 0, 0 ) long -> zero-ref "field V54._upper (fldOffset=0x8)" P-INDEP
-; V86 tmp79 [V86,T26] ( 2, 1 ) long -> rcx "field V58._ticks (fldOffset=0x0)" P-INDEP
-; V87 tmp80 [V87,T21] ( 2, 2 ) ref -> rax "field V60._node (fldOffset=0x0)" P-INDEP
-; V88 tmp81 [V88,T23] ( 2, 2 ) long -> r15 "field V60._id (fldOffset=0x8)" P-INDEP
-; V89 tmp82 [V89,T14] ( 3, 3 ) long -> rdi "index expr"
-; V90 PSPSym [V90,T28] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
-;* V91 cse0 [V91,T24] ( 0, 0 ) byref -> zero-ref multi-def "CSE #02: moderate"
-; V92 cse1 [V92,T25] ( 2, 1 ) ref -> r15 "CSE #04: conservative"
+;* V44 tmp37 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V45 tmp38 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V46 tmp39 [V46 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V47 tmp40 [V47 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V48 tmp41 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V49 tmp42 [V49 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V51 tmp44 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V52 tmp45 [V52 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V53 tmp46 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V54 tmp47 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V55 tmp48 [V55,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V56 tmp49 [V56 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V57 tmp50 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V58 tmp51 [V58 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V59 tmp52 [V59,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V60 tmp53 [V60 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V61 tmp54 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
+; V62 tmp55 [V62,T12] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]>
+;* V63 tmp56 [V63 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
+;* V64 tmp57 [V64 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V65 tmp58 [V65 ] ( 4, 4 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
+; V66 tmp59 [V66 ] ( 3, 1 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
+;* V67 tmp60 [V67,T35] ( 0, 0 ) long -> zero-ref "field V15._ticks (fldOffset=0x0)" P-INDEP
+;* V68 tmp61 [V68 ] ( 0, 0 ) long -> zero-ref "field V16._ticks (fldOffset=0x0)" P-INDEP
+;* V69 tmp62 [V69 ] ( 0, 0 ) long -> zero-ref "field V30._lower (fldOffset=0x0)" P-INDEP
+;* V70 tmp63 [V70 ] ( 0, 0 ) long -> zero-ref "field V30._upper (fldOffset=0x8)" P-INDEP
+;* V71 tmp64 [V71 ] ( 0, 0 ) long -> zero-ref "field V31._lower (fldOffset=0x0)" P-INDEP
+;* V72 tmp65 [V72 ] ( 0, 0 ) long -> zero-ref "field V31._upper (fldOffset=0x8)" P-INDEP
+;* V73 tmp66 [V73 ] ( 0, 0 ) long -> zero-ref "field V32._lower (fldOffset=0x0)" P-INDEP
+;* V74 tmp67 [V74 ] ( 0, 0 ) long -> zero-ref "field V32._upper (fldOffset=0x8)" P-INDEP
+;* V75 tmp68 [V75 ] ( 0, 0 ) long -> zero-ref "field V35._lower (fldOffset=0x0)" P-INDEP
+; V76 tmp69 [V76,T15] ( 5, 2.50) long -> rdi "field V35._upper (fldOffset=0x8)" P-INDEP
+;* V77 tmp70 [V77 ] ( 0, 0 ) long -> zero-ref "field V44._lower (fldOffset=0x0)" P-INDEP
+;* V78 tmp71 [V78 ] ( 0, 0 ) long -> zero-ref "field V44._upper (fldOffset=0x8)" P-INDEP
+;* V79 tmp72 [V79 ] ( 0, 0 ) long -> zero-ref "field V48._lower (fldOffset=0x0)" P-INDEP
+;* V80 tmp73 [V80 ] ( 0, 0 ) long -> zero-ref "field V48._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp74 [V81 ] ( 0, 0 ) long -> zero-ref "field V50._lower (fldOffset=0x0)" P-INDEP
+;* V82 tmp75 [V82 ] ( 0, 0 ) long -> zero-ref "field V50._upper (fldOffset=0x8)" P-INDEP
+;* V83 tmp76 [V83 ] ( 0, 0 ) long -> zero-ref "field V51._lower (fldOffset=0x0)" P-INDEP
+;* V84 tmp77 [V84 ] ( 0, 0 ) long -> zero-ref "field V51._upper (fldOffset=0x8)" P-INDEP
+;* V85 tmp78 [V85 ] ( 0, 0 ) long -> zero-ref "field V53._lower (fldOffset=0x0)" P-INDEP
+;* V86 tmp79 [V86 ] ( 0, 0 ) long -> zero-ref "field V53._upper (fldOffset=0x8)" P-INDEP
+;* V87 tmp80 [V87 ] ( 0, 0 ) long -> zero-ref "field V57._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp81 [V88 ] ( 0, 0 ) long -> zero-ref "field V57._upper (fldOffset=0x8)" P-INDEP
+; V89 tmp82 [V89,T30] ( 2, 1 ) long -> rcx "field V61._ticks (fldOffset=0x0)" P-INDEP
+; V90 tmp83 [V90,T20] ( 2, 2 ) ref -> rax "field V63._node (fldOffset=0x0)" P-INDEP
+; V91 tmp84 [V91,T22] ( 2, 2 ) long -> r15 "field V63._id (fldOffset=0x8)" P-INDEP
+; V92 tmp85 [V92,T23] ( 2, 2 ) long -> rdi "index expr"
+; V93 PSPSym [V93,T32] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
+;* V94 cse0 [V94,T28] ( 0, 0 ) byref -> zero-ref multi-def "CSE #02: moderate"
+; V95 cse1 [V95,T27] ( 3, 1.50) long -> rax "CSE #04: conservative"
+; V96 cse2 [V96,T29] ( 2, 1 ) ref -> r15 "CSE #05: conservative"
+; V97 rat0 [V97,T24] ( 2, 2 ) long -> rax "TLS field access"
+; V98 rat1 [V98,T25] ( 2, 2 ) long -> rax "TLS access"
;
-; Lcl frame size = 64
+; Lcl frame size = 32
G_M55498_IG01:
push rbp
push r15
push r14
push r13
push rbx
- sub rsp, 64
- vzeroupper
- lea rbp, [rsp+0x60]
+ sub rsp, 32
+ lea rbp, [rsp+0x40]
xor eax, eax
mov qword ptr [rbp-0x30], rax
- mov qword ptr [rbp-0x60], rsp
+ mov qword ptr [rbp-0x40], rsp
mov gword ptr [rbp-0x28], r8
mov rbx, rdi
mov r15, rsi
mov r14d, edx
mov r13, rcx
- ;; size=46 bbWeight=1 PerfScore 11.00
+ ;; size=43 bbWeight=1 PerfScore 10.00
G_M55498_IG02:
mov dword ptr [rbx+0x34], 0xD1FFAB1E
lea rdi, bword ptr [rbx+0x40]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
test dword ptr [r15+0x34], 0xD1FFAB1E
jne SHORT G_M55498_IG05
;; size=29 bbWeight=1 PerfScore 6.75
G_M55498_IG03:
cmp gword ptr [r15+0x20], 0
jne SHORT G_M55498_IG04
lea rdi, bword ptr [r15+0x20]
test rdi, rdi
- je G_M55498_IG24
+ je G_M55498_IG25
mov rsi, rbx
xor rdx, rdx
call System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
test rax, rax
je SHORT G_M55498_IG06
;; size=35 bbWeight=0.50 PerfScore 4.25
G_M55498_IG04:
mov rdi, r15
mov rsi, rbx
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
call [rax]System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
test eax, eax
jne SHORT G_M55498_IG06
;; size=24 bbWeight=0.50 PerfScore 2.62
G_M55498_IG05:
mov rdi, rbx
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1[double]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
call [rax]System.Threading.Tasks.Task+CancellationPromise`1[double]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
;; size=18 bbWeight=0.50 PerfScore 1.88
G_M55498_IG06:
cmp r14d, -1
- je G_M55498_IG12
+ je G_M55498_IG13
;; size=10 bbWeight=1 PerfScore 1.25
G_M55498_IG07:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M55498_IG25
+ je G_M55498_IG26
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M55498_IG08:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]:<>9__3_1
mov r15, gword ptr [rdi]
test r15, r15
jne SHORT G_M55498_IG09
mov rdi, 0xD1FFAB1E ; System.Threading.TimerCallback
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]:<>9
mov rsi, gword ptr [rdi]
test rsi, rsi
- je G_M55498_IG27
+ je G_M55498_IG28
lea rdi, bword ptr [r15+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]:<.ctor>b__3_1(System.Object):this
mov qword ptr [r15+0x18], rdi
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]:<>9__3_1
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
;; size=99 bbWeight=0.50 PerfScore 6.38
G_M55498_IG09:
mov rax, 0xD1FFAB1E ; const ptr
cmp r13, gword ptr [rax]
je SHORT G_M55498_IG10
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
call [rax]System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
mov gword ptr [rbp-0x30], rax
- jmp G_M55498_IG19
+ jmp G_M55498_IG20
;; size=36 bbWeight=0.50 PerfScore 5.25
G_M55498_IG10:
mov rdi, 0xD1FFAB1E ; System.Threading.TimerQueueTimer
call CORINFO_HELP_NEWSFAST
mov r13, rax
- mov gword ptr [rbp-0x48], r13
lea rdi, bword ptr [r13+0x20]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r13+0x28]
- mov gword ptr [rbp-0x40], rbx
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [r13+0x48], -1
- mov rax, 0xD1FFAB1E ; const ptr
- mov r15, gword ptr [rax]
- mov gword ptr [rbp-0x50], r15
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov r15, gword ptr [rdi]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=85 bbWeight=0.50 PerfScore 5.75
+ call rax
+ add rax, 76
+ mov ecx, dword ptr [rax+0x10]
+ lea edx, [rcx-0x01]
+ mov dword ptr [rax+0x10], edx
+ movzx rax, cx
+ test eax, eax
+ je SHORT G_M55498_IG11
+ sar ecx, 16
+ jmp SHORT G_M55498_IG12
+ ;; size=110 bbWeight=0.50 PerfScore 9.75
G_M55498_IG11:
- call rax ; Interop+Sys:SchedGetCpu():int
- mov edi, eax
- mov rsi, rdi
- sar rsi, 63
- and rsi, 15
- add rsi, rdi
- and rsi, -16
- sub rdi, rsi
- cmp rdi, 16
- jae G_M55498_IG28
- mov r15, gword ptr [rbp-0x50]
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov ecx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M55498_IG12:
+ mov edi, ecx
+ and rdi, 15
mov rsi, gword ptr [r15+8*rdi+0x10]
- mov r13, gword ptr [rbp-0x48]
lea rdi, bword ptr [r13+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, r13
mov esi, r14d
mov edx, -1
mov rax, 0xD1FFAB1E ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
call [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
- mov rbx, gword ptr [rbp-0x40]
lea rdi, bword ptr [rbx+0x48]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- je SHORT G_M55498_IG12
- call CORINFO_HELP_POLL_GC
- ;; size=116 bbWeight=0.50 PerfScore 11.88
-G_M55498_IG12:
+ ;; size=55 bbWeight=0.50 PerfScore 4.88
+G_M55498_IG13:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M55498_IG26
+ je G_M55498_IG27
;; size=19 bbWeight=1 PerfScore 4.25
-G_M55498_IG13:
+G_M55498_IG14:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]:<>9__3_0
mov rsi, gword ptr [rdi]
test rsi, rsi
- jne SHORT G_M55498_IG15
+ jne SHORT G_M55498_IG16
;; size=18 bbWeight=1 PerfScore 3.50
-G_M55498_IG14:
+G_M55498_IG15:
mov rdi, 0xD1FFAB1E ; System.Action`2[System.Object,System.Threading.CancellationToken]
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]:<>9
mov rsi, gword ptr [rdi]
test rsi, rsi
- je G_M55498_IG27
+ je G_M55498_IG28
lea rdi, bword ptr [r14+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]:<.ctor>b__3_0(System.Object,System.Threading.CancellationToken):this
mov qword ptr [r14+0x18], rdi
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]:<>9__3_0
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rsi, r14
;; size=84 bbWeight=0.50 PerfScore 4.75
-G_M55498_IG15:
+G_M55498_IG16:
lea rdi, bword ptr [rbp-0x28]
mov rdx, rbx
xor ecx, ecx
xor r8d, r8d
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
call [rax]System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
mov r15, rdx
lea rdi, bword ptr [rbx+0x50]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [rbx+0x58], r15
test dword ptr [rbx+0x34], 0xD1FFAB1E
- je SHORT G_M55498_IG17
+ je SHORT G_M55498_IG18
;; size=52 bbWeight=1 PerfScore 11.50
-G_M55498_IG16:
+G_M55498_IG17:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1[double]:Cleanup():this
call [rax]System.Threading.Tasks.Task+CancellationPromise`1[double]:Cleanup():this
;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M55498_IG17:
+G_M55498_IG18:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M55498_IG18:
- add rsp, 64
+G_M55498_IG19:
+ add rsp, 32
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 3.75
-G_M55498_IG19:
+G_M55498_IG20:
mov edx, r14d
mov edi, 0x3E8
lea rsi, [rbp-0x38]
mulx rdi, rcx, rdi
mov qword ptr [rsi], rcx
mov rsi, qword ptr [rbp-0x38]
sar rdx, 63
and rdx, 0x3E8
sub rdi, rdx
test rdi, rdi
- jg SHORT G_M55498_IG22
+ jg SHORT G_M55498_IG23
test rdi, rdi
- jne SHORT G_M55498_IG20
+ jne SHORT G_M55498_IG21
mov rdx, 0xD1FFAB1E
cmp rsi, rdx
- ja SHORT G_M55498_IG22
+ ja SHORT G_M55498_IG23
;; size=63 bbWeight=0.50 PerfScore 5.50
-G_M55498_IG20:
+G_M55498_IG21:
cmp rdi, -1
- jl SHORT G_M55498_IG22
+ jl SHORT G_M55498_IG23
cmp rdi, -1
- jne SHORT G_M55498_IG21
+ jne SHORT G_M55498_IG22
mov rdi, 0xD1FFAB1E
cmp rsi, rdi
- jb SHORT G_M55498_IG22
+ jb SHORT G_M55498_IG23
;; size=27 bbWeight=0.50 PerfScore 2.00
-G_M55498_IG21:
+G_M55498_IG22:
lea rcx, [rsi+4*rsi]
add rcx, rcx
mov rdi, r13
mov rsi, r15
mov rdx, rbx
mov r8, -0x2710
mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x48]
call [rax]System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this
lea rdi, bword ptr [rbx+0x48]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- jmp SHORT G_M55498_IG23
+ jmp SHORT G_M55498_IG24
;; size=50 bbWeight=0.50 PerfScore 6.25
-G_M55498_IG22:
+G_M55498_IG23:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M55498_IG23:
+G_M55498_IG24:
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Threading.AsyncFlowControl:Undo():this
call [rax]System.Threading.AsyncFlowControl:Undo():this
- jmp G_M55498_IG12
+ jmp G_M55498_IG13
;; size=21 bbWeight=0.50 PerfScore 2.88
-G_M55498_IG24:
+G_M55498_IG25:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowNullReferenceException()
call [rax]System.ThrowHelper:ThrowNullReferenceException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M55498_IG25:
+G_M55498_IG26:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M55498_IG08
;; size=20 bbWeight=0 PerfScore 0.00
-G_M55498_IG26:
+G_M55498_IG27:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[double]
call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M55498_IG13
+ jmp G_M55498_IG14
;; size=20 bbWeight=0 PerfScore 0.00
-G_M55498_IG27:
+G_M55498_IG28:
mov rax, 0xD1FFAB1E ; code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
call [rax]System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M55498_IG28:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
G_M55498_IG29:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 16
- vzeroupper
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x60]
- ;; size=26 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x40]
+ ;; size=23 bbWeight=0 PerfScore 0.00
G_M55498_IG30:
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Threading.AsyncFlowControl:Undo():this
call [rax]System.Threading.AsyncFlowControl:Undo():this
nop
;; size=17 bbWeight=0 PerfScore 0.00
G_M55498_IG31:
add rsp, 16
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1021, prolog size 46, PerfScore 105.50, instruction count 241, allocated bytes for code 1021 (MethodHash=a61f2735) for method System.Threading.Tasks.Task+CancellationPromise`1[double]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 987, prolog size 43, PerfScore 103.25, instruction count 233, allocated bytes for code 987 (MethodHash=a61f2735) for method System.Threading.Tasks.Task+CancellationPromise`1[double]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
-34 (-3.33 % of base) - System.Threading.Tasks.Task+CancellationPromise`1[int]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this
; Assembly listing for method System.Threading.Tasks.Task+CancellationPromise`1[int]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):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; 28 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 16, 12 ) ref -> [rbp-0x40] this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[int]>
+; V00 this [V00,T00] ( 16, 12 ) ref -> rbx this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[int]>
; V01 arg1 [V01,T01] ( 8, 6 ) ref -> r15 class-hnd single-def <System.Threading.Tasks.Task>
; V02 arg2 [V02,T03] ( 5, 4 ) int -> r14 single-def
; V03 arg3 [V03,T04] ( 5, 3.50) ref -> r13 class-hnd single-def <System.TimeProvider>
; V04 arg4 [V04 ] ( 4, 4 ) struct ( 8) [rbp-0x28] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
;* V05 loc0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Threading.TimerCallback>
; V06 loc1 [V06 ] ( 3, 1 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.AsyncFlowControl>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T08] ( 2, 4 ) ref -> rsi class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V10 tmp3 [V10,T27] ( 0, 0 ) byref -> zero-ref single-def
+;* V10 tmp3 [V10,T31] ( 0, 0 ) byref -> zero-ref single-def
; V11 tmp4 [V11,T09] ( 4, 3.50) ref -> rsi
; V12 tmp5 [V12,T05] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Action`2[System.Object,System.Threading.CancellationToken]>
-; V13 tmp6 [V13,T19] ( 2, 2 ) ref -> r15 class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
-; V14 tmp7 [V14,T15] ( 5, 2.50) ref -> r15
+; V13 tmp6 [V13,T18] ( 2, 2 ) ref -> r15 class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
+; V14 tmp7 [V14,T14] ( 5, 2.50) ref -> r15
;* V15 tmp8 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "folding static readonly field struct" <System.TimeSpan>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.TimeSpan>
-; V17 tmp10 [V17,T02] ( 7, 7 ) ref -> [rbp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+; V17 tmp10 [V17,T02] ( 7, 7 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
; V18 tmp11 [V18,T06] ( 5, 5 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerCallback>
-; V19 tmp12 [V19,T17] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V19 tmp12 [V19,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V20 tmp13 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V21 tmp14 [V21,T10] ( 3, 3 ) byref -> rdi single-def "Inlining Arg"
; V22 tmp15 [V22,T11] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]>
-; V23 tmp16 [V23,T20] ( 2, 2 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-; V24 tmp17 [V24,T07] ( 4, 4 ) long -> rdi "impAppendStmt"
+; V23 tmp16 [V23,T19] ( 2, 2 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V24 tmp17 [V24 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V25 tmp18 [V25 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V26 tmp19 [V26 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V27 tmp20 [V27 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
-;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V30 tmp23 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V31 tmp24 [V31 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-; V33 tmp26 [V33,T13] ( 3, 3 ) long -> rdx "Inlining Arg"
-; V34 tmp27 [V34,T18] ( 4, 2 ) long -> rsi ld-addr-op "Inline ldloca(s) first use temp"
-;* V35 tmp28 [V35 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-; V36 tmp29 [V36 ] ( 2, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V37 tmp30 [V37,T22] ( 2, 2 ) long -> rdi "impAppendStmt"
-;* V38 tmp31 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V39 tmp32 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V40 tmp33 [V40 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V41 tmp34 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+; V26 tmp19 [V26,T26] ( 3, 1.50) int -> rcx "Inline return value spill temp"
+; V27 tmp20 [V27,T07] ( 4, 4 ) int -> rcx "dup spill"
+;* V28 tmp21 [V28 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V29 tmp22 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
+;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V33 tmp26 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V34 tmp27 [V34 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V35 tmp28 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+; V36 tmp29 [V36,T13] ( 3, 3 ) long -> rdx "Inlining Arg"
+; V37 tmp30 [V37,T17] ( 4, 2 ) long -> rsi ld-addr-op "Inline ldloca(s) first use temp"
+;* V38 tmp31 [V38 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
+; V39 tmp32 [V39 ] ( 2, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V40 tmp33 [V40,T21] ( 2, 2 ) long -> rdi "impAppendStmt"
+;* V41 tmp34 [V41 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V42 tmp35 [V42 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V43 tmp36 [V43 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V44 tmp37 [V44 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V45 tmp38 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V46 tmp39 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V47 tmp40 [V47 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V48 tmp41 [V48 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V49 tmp42 [V49 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V51 tmp44 [V51 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V52 tmp45 [V52,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V53 tmp46 [V53 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V54 tmp47 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V55 tmp48 [V55 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V56 tmp49 [V56,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V57 tmp50 [V57 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V58 tmp51 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-; V59 tmp52 [V59,T12] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]>
-;* V60 tmp53 [V60 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
-;* V61 tmp54 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V62 tmp55 [V62 ] ( 4, 4 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
-; V63 tmp56 [V63 ] ( 3, 1 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
-;* V64 tmp57 [V64,T31] ( 0, 0 ) long -> zero-ref "field V15._ticks (fldOffset=0x0)" P-INDEP
-;* V65 tmp58 [V65 ] ( 0, 0 ) long -> zero-ref "field V16._ticks (fldOffset=0x0)" P-INDEP
-;* V66 tmp59 [V66 ] ( 0, 0 ) long -> zero-ref "field V27._lower (fldOffset=0x0)" P-INDEP
-;* V67 tmp60 [V67 ] ( 0, 0 ) long -> zero-ref "field V27._upper (fldOffset=0x8)" P-INDEP
-;* V68 tmp61 [V68 ] ( 0, 0 ) long -> zero-ref "field V28._lower (fldOffset=0x0)" P-INDEP
-;* V69 tmp62 [V69 ] ( 0, 0 ) long -> zero-ref "field V28._upper (fldOffset=0x8)" P-INDEP
-;* V70 tmp63 [V70 ] ( 0, 0 ) long -> zero-ref "field V29._lower (fldOffset=0x0)" P-INDEP
-;* V71 tmp64 [V71 ] ( 0, 0 ) long -> zero-ref "field V29._upper (fldOffset=0x8)" P-INDEP
-;* V72 tmp65 [V72 ] ( 0, 0 ) long -> zero-ref "field V32._lower (fldOffset=0x0)" P-INDEP
-; V73 tmp66 [V73,T16] ( 5, 2.50) long -> rdi "field V32._upper (fldOffset=0x8)" P-INDEP
-;* V74 tmp67 [V74 ] ( 0, 0 ) long -> zero-ref "field V41._lower (fldOffset=0x0)" P-INDEP
-;* V75 tmp68 [V75 ] ( 0, 0 ) long -> zero-ref "field V41._upper (fldOffset=0x8)" P-INDEP
-;* V76 tmp69 [V76 ] ( 0, 0 ) long -> zero-ref "field V45._lower (fldOffset=0x0)" P-INDEP
-;* V77 tmp70 [V77 ] ( 0, 0 ) long -> zero-ref "field V45._upper (fldOffset=0x8)" P-INDEP
-;* V78 tmp71 [V78 ] ( 0, 0 ) long -> zero-ref "field V47._lower (fldOffset=0x0)" P-INDEP
-;* V79 tmp72 [V79 ] ( 0, 0 ) long -> zero-ref "field V47._upper (fldOffset=0x8)" P-INDEP
-;* V80 tmp73 [V80 ] ( 0, 0 ) long -> zero-ref "field V48._lower (fldOffset=0x0)" P-INDEP
-;* V81 tmp74 [V81 ] ( 0, 0 ) long -> zero-ref "field V48._upper (fldOffset=0x8)" P-INDEP
-;* V82 tmp75 [V82 ] ( 0, 0 ) long -> zero-ref "field V50._lower (fldOffset=0x0)" P-INDEP
-;* V83 tmp76 [V83 ] ( 0, 0 ) long -> zero-ref "field V50._upper (fldOffset=0x8)" P-INDEP
-;* V84 tmp77 [V84 ] ( 0, 0 ) long -> zero-ref "field V54._lower (fldOffset=0x0)" P-INDEP
-;* V85 tmp78 [V85 ] ( 0, 0 ) long -> zero-ref "field V54._upper (fldOffset=0x8)" P-INDEP
-; V86 tmp79 [V86,T26] ( 2, 1 ) long -> rcx "field V58._ticks (fldOffset=0x0)" P-INDEP
-; V87 tmp80 [V87,T21] ( 2, 2 ) ref -> rax "field V60._node (fldOffset=0x0)" P-INDEP
-; V88 tmp81 [V88,T23] ( 2, 2 ) long -> r15 "field V60._id (fldOffset=0x8)" P-INDEP
-; V89 tmp82 [V89,T14] ( 3, 3 ) long -> rdi "index expr"
-; V90 PSPSym [V90,T28] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
-;* V91 cse0 [V91,T24] ( 0, 0 ) byref -> zero-ref multi-def "CSE #02: moderate"
-; V92 cse1 [V92,T25] ( 2, 1 ) ref -> r15 "CSE #04: conservative"
+;* V44 tmp37 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V45 tmp38 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V46 tmp39 [V46 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V47 tmp40 [V47 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V48 tmp41 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V49 tmp42 [V49 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V51 tmp44 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V52 tmp45 [V52 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V53 tmp46 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V54 tmp47 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V55 tmp48 [V55,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V56 tmp49 [V56 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V57 tmp50 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V58 tmp51 [V58 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V59 tmp52 [V59,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V60 tmp53 [V60 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V61 tmp54 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
+; V62 tmp55 [V62,T12] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]>
+;* V63 tmp56 [V63 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
+;* V64 tmp57 [V64 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V65 tmp58 [V65 ] ( 4, 4 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
+; V66 tmp59 [V66 ] ( 3, 1 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
+;* V67 tmp60 [V67,T35] ( 0, 0 ) long -> zero-ref "field V15._ticks (fldOffset=0x0)" P-INDEP
+;* V68 tmp61 [V68 ] ( 0, 0 ) long -> zero-ref "field V16._ticks (fldOffset=0x0)" P-INDEP
+;* V69 tmp62 [V69 ] ( 0, 0 ) long -> zero-ref "field V30._lower (fldOffset=0x0)" P-INDEP
+;* V70 tmp63 [V70 ] ( 0, 0 ) long -> zero-ref "field V30._upper (fldOffset=0x8)" P-INDEP
+;* V71 tmp64 [V71 ] ( 0, 0 ) long -> zero-ref "field V31._lower (fldOffset=0x0)" P-INDEP
+;* V72 tmp65 [V72 ] ( 0, 0 ) long -> zero-ref "field V31._upper (fldOffset=0x8)" P-INDEP
+;* V73 tmp66 [V73 ] ( 0, 0 ) long -> zero-ref "field V32._lower (fldOffset=0x0)" P-INDEP
+;* V74 tmp67 [V74 ] ( 0, 0 ) long -> zero-ref "field V32._upper (fldOffset=0x8)" P-INDEP
+;* V75 tmp68 [V75 ] ( 0, 0 ) long -> zero-ref "field V35._lower (fldOffset=0x0)" P-INDEP
+; V76 tmp69 [V76,T15] ( 5, 2.50) long -> rdi "field V35._upper (fldOffset=0x8)" P-INDEP
+;* V77 tmp70 [V77 ] ( 0, 0 ) long -> zero-ref "field V44._lower (fldOffset=0x0)" P-INDEP
+;* V78 tmp71 [V78 ] ( 0, 0 ) long -> zero-ref "field V44._upper (fldOffset=0x8)" P-INDEP
+;* V79 tmp72 [V79 ] ( 0, 0 ) long -> zero-ref "field V48._lower (fldOffset=0x0)" P-INDEP
+;* V80 tmp73 [V80 ] ( 0, 0 ) long -> zero-ref "field V48._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp74 [V81 ] ( 0, 0 ) long -> zero-ref "field V50._lower (fldOffset=0x0)" P-INDEP
+;* V82 tmp75 [V82 ] ( 0, 0 ) long -> zero-ref "field V50._upper (fldOffset=0x8)" P-INDEP
+;* V83 tmp76 [V83 ] ( 0, 0 ) long -> zero-ref "field V51._lower (fldOffset=0x0)" P-INDEP
+;* V84 tmp77 [V84 ] ( 0, 0 ) long -> zero-ref "field V51._upper (fldOffset=0x8)" P-INDEP
+;* V85 tmp78 [V85 ] ( 0, 0 ) long -> zero-ref "field V53._lower (fldOffset=0x0)" P-INDEP
+;* V86 tmp79 [V86 ] ( 0, 0 ) long -> zero-ref "field V53._upper (fldOffset=0x8)" P-INDEP
+;* V87 tmp80 [V87 ] ( 0, 0 ) long -> zero-ref "field V57._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp81 [V88 ] ( 0, 0 ) long -> zero-ref "field V57._upper (fldOffset=0x8)" P-INDEP
+; V89 tmp82 [V89,T30] ( 2, 1 ) long -> rcx "field V61._ticks (fldOffset=0x0)" P-INDEP
+; V90 tmp83 [V90,T20] ( 2, 2 ) ref -> rax "field V63._node (fldOffset=0x0)" P-INDEP
+; V91 tmp84 [V91,T22] ( 2, 2 ) long -> r15 "field V63._id (fldOffset=0x8)" P-INDEP
+; V92 tmp85 [V92,T23] ( 2, 2 ) long -> rdi "index expr"
+; V93 PSPSym [V93,T32] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
+;* V94 cse0 [V94,T28] ( 0, 0 ) byref -> zero-ref multi-def "CSE #02: moderate"
+; V95 cse1 [V95,T27] ( 3, 1.50) long -> rax "CSE #04: conservative"
+; V96 cse2 [V96,T29] ( 2, 1 ) ref -> r15 "CSE #05: conservative"
+; V97 rat0 [V97,T24] ( 2, 2 ) long -> rax "TLS field access"
+; V98 rat1 [V98,T25] ( 2, 2 ) long -> rax "TLS access"
;
-; Lcl frame size = 64
+; Lcl frame size = 32
G_M20556_IG01:
push rbp
push r15
push r14
push r13
push rbx
- sub rsp, 64
- vzeroupper
- lea rbp, [rsp+0x60]
+ sub rsp, 32
+ lea rbp, [rsp+0x40]
xor eax, eax
mov qword ptr [rbp-0x30], rax
- mov qword ptr [rbp-0x60], rsp
+ mov qword ptr [rbp-0x40], rsp
mov gword ptr [rbp-0x28], r8
mov rbx, rdi
mov r15, rsi
mov r14d, edx
mov r13, rcx
- ;; size=46 bbWeight=1 PerfScore 11.00
+ ;; size=43 bbWeight=1 PerfScore 10.00
G_M20556_IG02:
mov dword ptr [rbx+0x34], 0xD1FFAB1E
lea rdi, bword ptr [rbx+0x40]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
test dword ptr [r15+0x34], 0xD1FFAB1E
jne SHORT G_M20556_IG05
;; size=29 bbWeight=1 PerfScore 6.75
G_M20556_IG03:
cmp gword ptr [r15+0x20], 0
jne SHORT G_M20556_IG04
lea rdi, bword ptr [r15+0x20]
test rdi, rdi
- je G_M20556_IG24
+ je G_M20556_IG25
mov rsi, rbx
xor rdx, rdx
call System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
test rax, rax
je SHORT G_M20556_IG06
;; size=35 bbWeight=0.50 PerfScore 4.25
G_M20556_IG04:
mov rdi, r15
mov rsi, rbx
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
call [rax]System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
test eax, eax
jne SHORT G_M20556_IG06
;; size=24 bbWeight=0.50 PerfScore 2.62
G_M20556_IG05:
mov rdi, rbx
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1[int]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
call [rax]System.Threading.Tasks.Task+CancellationPromise`1[int]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
;; size=18 bbWeight=0.50 PerfScore 1.88
G_M20556_IG06:
cmp r14d, -1
- je G_M20556_IG12
+ je G_M20556_IG13
;; size=10 bbWeight=1 PerfScore 1.25
G_M20556_IG07:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M20556_IG25
+ je G_M20556_IG26
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M20556_IG08:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]:<>9__3_1
mov r15, gword ptr [rdi]
test r15, r15
jne SHORT G_M20556_IG09
mov rdi, 0xD1FFAB1E ; System.Threading.TimerCallback
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]:<>9
mov rsi, gword ptr [rdi]
test rsi, rsi
- je G_M20556_IG27
+ je G_M20556_IG28
lea rdi, bword ptr [r15+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]:<.ctor>b__3_1(System.Object):this
mov qword ptr [r15+0x18], rdi
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]:<>9__3_1
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
;; size=99 bbWeight=0.50 PerfScore 6.38
G_M20556_IG09:
mov rax, 0xD1FFAB1E ; const ptr
cmp r13, gword ptr [rax]
je SHORT G_M20556_IG10
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
call [rax]System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
mov gword ptr [rbp-0x30], rax
- jmp G_M20556_IG19
+ jmp G_M20556_IG20
;; size=36 bbWeight=0.50 PerfScore 5.25
G_M20556_IG10:
mov rdi, 0xD1FFAB1E ; System.Threading.TimerQueueTimer
call CORINFO_HELP_NEWSFAST
mov r13, rax
- mov gword ptr [rbp-0x48], r13
lea rdi, bword ptr [r13+0x20]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r13+0x28]
- mov gword ptr [rbp-0x40], rbx
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [r13+0x48], -1
- mov rax, 0xD1FFAB1E ; const ptr
- mov r15, gword ptr [rax]
- mov gword ptr [rbp-0x50], r15
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov r15, gword ptr [rdi]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=85 bbWeight=0.50 PerfScore 5.75
+ call rax
+ add rax, 76
+ mov ecx, dword ptr [rax+0x10]
+ lea edx, [rcx-0x01]
+ mov dword ptr [rax+0x10], edx
+ movzx rax, cx
+ test eax, eax
+ je SHORT G_M20556_IG11
+ sar ecx, 16
+ jmp SHORT G_M20556_IG12
+ ;; size=110 bbWeight=0.50 PerfScore 9.75
G_M20556_IG11:
- call rax ; Interop+Sys:SchedGetCpu():int
- mov edi, eax
- mov rsi, rdi
- sar rsi, 63
- and rsi, 15
- add rsi, rdi
- and rsi, -16
- sub rdi, rsi
- cmp rdi, 16
- jae G_M20556_IG28
- mov r15, gword ptr [rbp-0x50]
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov ecx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M20556_IG12:
+ mov edi, ecx
+ and rdi, 15
mov rsi, gword ptr [r15+8*rdi+0x10]
- mov r13, gword ptr [rbp-0x48]
lea rdi, bword ptr [r13+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, r13
mov esi, r14d
mov edx, -1
mov rax, 0xD1FFAB1E ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
call [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
- mov rbx, gword ptr [rbp-0x40]
lea rdi, bword ptr [rbx+0x48]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- je SHORT G_M20556_IG12
- call CORINFO_HELP_POLL_GC
- ;; size=116 bbWeight=0.50 PerfScore 11.88
-G_M20556_IG12:
+ ;; size=55 bbWeight=0.50 PerfScore 4.88
+G_M20556_IG13:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M20556_IG26
+ je G_M20556_IG27
;; size=19 bbWeight=1 PerfScore 4.25
-G_M20556_IG13:
+G_M20556_IG14:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]:<>9__3_0
mov rsi, gword ptr [rdi]
test rsi, rsi
- jne SHORT G_M20556_IG15
+ jne SHORT G_M20556_IG16
;; size=18 bbWeight=1 PerfScore 3.50
-G_M20556_IG14:
+G_M20556_IG15:
mov rdi, 0xD1FFAB1E ; System.Action`2[System.Object,System.Threading.CancellationToken]
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]:<>9
mov rsi, gword ptr [rdi]
test rsi, rsi
- je G_M20556_IG27
+ je G_M20556_IG28
lea rdi, bword ptr [r14+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]:<.ctor>b__3_0(System.Object,System.Threading.CancellationToken):this
mov qword ptr [r14+0x18], rdi
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]:<>9__3_0
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rsi, r14
;; size=84 bbWeight=0.50 PerfScore 4.75
-G_M20556_IG15:
+G_M20556_IG16:
lea rdi, bword ptr [rbp-0x28]
mov rdx, rbx
xor ecx, ecx
xor r8d, r8d
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
call [rax]System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
mov r15, rdx
lea rdi, bword ptr [rbx+0x50]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [rbx+0x58], r15
test dword ptr [rbx+0x34], 0xD1FFAB1E
- je SHORT G_M20556_IG17
+ je SHORT G_M20556_IG18
;; size=52 bbWeight=1 PerfScore 11.50
-G_M20556_IG16:
+G_M20556_IG17:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1[int]:Cleanup():this
call [rax]System.Threading.Tasks.Task+CancellationPromise`1[int]:Cleanup():this
;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M20556_IG17:
+G_M20556_IG18:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M20556_IG18:
- add rsp, 64
+G_M20556_IG19:
+ add rsp, 32
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 3.75
-G_M20556_IG19:
+G_M20556_IG20:
mov edx, r14d
mov edi, 0x3E8
lea rsi, [rbp-0x38]
mulx rdi, rcx, rdi
mov qword ptr [rsi], rcx
mov rsi, qword ptr [rbp-0x38]
sar rdx, 63
and rdx, 0x3E8
sub rdi, rdx
test rdi, rdi
- jg SHORT G_M20556_IG22
+ jg SHORT G_M20556_IG23
test rdi, rdi
- jne SHORT G_M20556_IG20
+ jne SHORT G_M20556_IG21
mov rdx, 0xD1FFAB1E
cmp rsi, rdx
- ja SHORT G_M20556_IG22
+ ja SHORT G_M20556_IG23
;; size=63 bbWeight=0.50 PerfScore 5.50
-G_M20556_IG20:
+G_M20556_IG21:
cmp rdi, -1
- jl SHORT G_M20556_IG22
+ jl SHORT G_M20556_IG23
cmp rdi, -1
- jne SHORT G_M20556_IG21
+ jne SHORT G_M20556_IG22
mov rdi, 0xD1FFAB1E
cmp rsi, rdi
- jb SHORT G_M20556_IG22
+ jb SHORT G_M20556_IG23
;; size=27 bbWeight=0.50 PerfScore 2.00
-G_M20556_IG21:
+G_M20556_IG22:
lea rcx, [rsi+4*rsi]
add rcx, rcx
mov rdi, r13
mov rsi, r15
mov rdx, rbx
mov r8, -0x2710
mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x48]
call [rax]System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this
lea rdi, bword ptr [rbx+0x48]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- jmp SHORT G_M20556_IG23
+ jmp SHORT G_M20556_IG24
;; size=50 bbWeight=0.50 PerfScore 6.25
-G_M20556_IG22:
+G_M20556_IG23:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M20556_IG23:
+G_M20556_IG24:
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Threading.AsyncFlowControl:Undo():this
call [rax]System.Threading.AsyncFlowControl:Undo():this
- jmp G_M20556_IG12
+ jmp G_M20556_IG13
;; size=21 bbWeight=0.50 PerfScore 2.88
-G_M20556_IG24:
+G_M20556_IG25:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowNullReferenceException()
call [rax]System.ThrowHelper:ThrowNullReferenceException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M20556_IG25:
+G_M20556_IG26:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M20556_IG08
;; size=20 bbWeight=0 PerfScore 0.00
-G_M20556_IG26:
+G_M20556_IG27:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[int]
call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M20556_IG13
+ jmp G_M20556_IG14
;; size=20 bbWeight=0 PerfScore 0.00
-G_M20556_IG27:
+G_M20556_IG28:
mov rax, 0xD1FFAB1E ; code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
call [rax]System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M20556_IG28:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
G_M20556_IG29:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 16
- vzeroupper
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x60]
- ;; size=26 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x40]
+ ;; size=23 bbWeight=0 PerfScore 0.00
G_M20556_IG30:
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Threading.AsyncFlowControl:Undo():this
call [rax]System.Threading.AsyncFlowControl:Undo():this
nop
;; size=17 bbWeight=0 PerfScore 0.00
G_M20556_IG31:
add rsp, 16
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1021, prolog size 46, PerfScore 105.50, instruction count 241, allocated bytes for code 1021 (MethodHash=3a45afb3) for method System.Threading.Tasks.Task+CancellationPromise`1[int]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 987, prolog size 43, PerfScore 103.25, instruction count 233, allocated bytes for code 987 (MethodHash=3a45afb3) for method System.Threading.Tasks.Task+CancellationPromise`1[int]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
-34 (-3.33 % of base) - System.Threading.Tasks.Task+CancellationPromise`1[long]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this
; Assembly listing for method System.Threading.Tasks.Task+CancellationPromise`1[long]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):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; 28 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 16, 12 ) ref -> [rbp-0x40] this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[long]>
+; V00 this [V00,T00] ( 16, 12 ) ref -> rbx this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[long]>
; V01 arg1 [V01,T01] ( 8, 6 ) ref -> r15 class-hnd single-def <System.Threading.Tasks.Task>
; V02 arg2 [V02,T03] ( 5, 4 ) int -> r14 single-def
; V03 arg3 [V03,T04] ( 5, 3.50) ref -> r13 class-hnd single-def <System.TimeProvider>
; V04 arg4 [V04 ] ( 4, 4 ) struct ( 8) [rbp-0x28] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
;* V05 loc0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Threading.TimerCallback>
; V06 loc1 [V06 ] ( 3, 1 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.AsyncFlowControl>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T08] ( 2, 4 ) ref -> rsi class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V10 tmp3 [V10,T27] ( 0, 0 ) byref -> zero-ref single-def
+;* V10 tmp3 [V10,T31] ( 0, 0 ) byref -> zero-ref single-def
; V11 tmp4 [V11,T09] ( 4, 3.50) ref -> rsi
; V12 tmp5 [V12,T05] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Action`2[System.Object,System.Threading.CancellationToken]>
-; V13 tmp6 [V13,T19] ( 2, 2 ) ref -> r15 class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
-; V14 tmp7 [V14,T15] ( 5, 2.50) ref -> r15
+; V13 tmp6 [V13,T18] ( 2, 2 ) ref -> r15 class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
+; V14 tmp7 [V14,T14] ( 5, 2.50) ref -> r15
;* V15 tmp8 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "folding static readonly field struct" <System.TimeSpan>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.TimeSpan>
-; V17 tmp10 [V17,T02] ( 7, 7 ) ref -> [rbp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+; V17 tmp10 [V17,T02] ( 7, 7 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
; V18 tmp11 [V18,T06] ( 5, 5 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerCallback>
-; V19 tmp12 [V19,T17] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V19 tmp12 [V19,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V20 tmp13 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V21 tmp14 [V21,T10] ( 3, 3 ) byref -> rdi single-def "Inlining Arg"
; V22 tmp15 [V22,T11] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]>
-; V23 tmp16 [V23,T20] ( 2, 2 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-; V24 tmp17 [V24,T07] ( 4, 4 ) long -> rdi "impAppendStmt"
+; V23 tmp16 [V23,T19] ( 2, 2 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V24 tmp17 [V24 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V25 tmp18 [V25 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V26 tmp19 [V26 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V27 tmp20 [V27 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
-;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V30 tmp23 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V31 tmp24 [V31 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-; V33 tmp26 [V33,T13] ( 3, 3 ) long -> rdx "Inlining Arg"
-; V34 tmp27 [V34,T18] ( 4, 2 ) long -> rsi ld-addr-op "Inline ldloca(s) first use temp"
-;* V35 tmp28 [V35 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-; V36 tmp29 [V36 ] ( 2, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V37 tmp30 [V37,T22] ( 2, 2 ) long -> rdi "impAppendStmt"
-;* V38 tmp31 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V39 tmp32 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V40 tmp33 [V40 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V41 tmp34 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+; V26 tmp19 [V26,T26] ( 3, 1.50) int -> rcx "Inline return value spill temp"
+; V27 tmp20 [V27,T07] ( 4, 4 ) int -> rcx "dup spill"
+;* V28 tmp21 [V28 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V29 tmp22 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
+;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V33 tmp26 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V34 tmp27 [V34 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V35 tmp28 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+; V36 tmp29 [V36,T13] ( 3, 3 ) long -> rdx "Inlining Arg"
+; V37 tmp30 [V37,T17] ( 4, 2 ) long -> rsi ld-addr-op "Inline ldloca(s) first use temp"
+;* V38 tmp31 [V38 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
+; V39 tmp32 [V39 ] ( 2, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V40 tmp33 [V40,T21] ( 2, 2 ) long -> rdi "impAppendStmt"
+;* V41 tmp34 [V41 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V42 tmp35 [V42 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V43 tmp36 [V43 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V44 tmp37 [V44 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V45 tmp38 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V46 tmp39 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V47 tmp40 [V47 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V48 tmp41 [V48 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V49 tmp42 [V49 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V51 tmp44 [V51 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V52 tmp45 [V52,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V53 tmp46 [V53 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V54 tmp47 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V55 tmp48 [V55 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V56 tmp49 [V56,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V57 tmp50 [V57 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V58 tmp51 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-; V59 tmp52 [V59,T12] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]>
-;* V60 tmp53 [V60 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
-;* V61 tmp54 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V62 tmp55 [V62 ] ( 4, 4 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
-; V63 tmp56 [V63 ] ( 3, 1 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
-;* V64 tmp57 [V64,T31] ( 0, 0 ) long -> zero-ref "field V15._ticks (fldOffset=0x0)" P-INDEP
-;* V65 tmp58 [V65 ] ( 0, 0 ) long -> zero-ref "field V16._ticks (fldOffset=0x0)" P-INDEP
-;* V66 tmp59 [V66 ] ( 0, 0 ) long -> zero-ref "field V27._lower (fldOffset=0x0)" P-INDEP
-;* V67 tmp60 [V67 ] ( 0, 0 ) long -> zero-ref "field V27._upper (fldOffset=0x8)" P-INDEP
-;* V68 tmp61 [V68 ] ( 0, 0 ) long -> zero-ref "field V28._lower (fldOffset=0x0)" P-INDEP
-;* V69 tmp62 [V69 ] ( 0, 0 ) long -> zero-ref "field V28._upper (fldOffset=0x8)" P-INDEP
-;* V70 tmp63 [V70 ] ( 0, 0 ) long -> zero-ref "field V29._lower (fldOffset=0x0)" P-INDEP
-;* V71 tmp64 [V71 ] ( 0, 0 ) long -> zero-ref "field V29._upper (fldOffset=0x8)" P-INDEP
-;* V72 tmp65 [V72 ] ( 0, 0 ) long -> zero-ref "field V32._lower (fldOffset=0x0)" P-INDEP
-; V73 tmp66 [V73,T16] ( 5, 2.50) long -> rdi "field V32._upper (fldOffset=0x8)" P-INDEP
-;* V74 tmp67 [V74 ] ( 0, 0 ) long -> zero-ref "field V41._lower (fldOffset=0x0)" P-INDEP
-;* V75 tmp68 [V75 ] ( 0, 0 ) long -> zero-ref "field V41._upper (fldOffset=0x8)" P-INDEP
-;* V76 tmp69 [V76 ] ( 0, 0 ) long -> zero-ref "field V45._lower (fldOffset=0x0)" P-INDEP
-;* V77 tmp70 [V77 ] ( 0, 0 ) long -> zero-ref "field V45._upper (fldOffset=0x8)" P-INDEP
-;* V78 tmp71 [V78 ] ( 0, 0 ) long -> zero-ref "field V47._lower (fldOffset=0x0)" P-INDEP
-;* V79 tmp72 [V79 ] ( 0, 0 ) long -> zero-ref "field V47._upper (fldOffset=0x8)" P-INDEP
-;* V80 tmp73 [V80 ] ( 0, 0 ) long -> zero-ref "field V48._lower (fldOffset=0x0)" P-INDEP
-;* V81 tmp74 [V81 ] ( 0, 0 ) long -> zero-ref "field V48._upper (fldOffset=0x8)" P-INDEP
-;* V82 tmp75 [V82 ] ( 0, 0 ) long -> zero-ref "field V50._lower (fldOffset=0x0)" P-INDEP
-;* V83 tmp76 [V83 ] ( 0, 0 ) long -> zero-ref "field V50._upper (fldOffset=0x8)" P-INDEP
-;* V84 tmp77 [V84 ] ( 0, 0 ) long -> zero-ref "field V54._lower (fldOffset=0x0)" P-INDEP
-;* V85 tmp78 [V85 ] ( 0, 0 ) long -> zero-ref "field V54._upper (fldOffset=0x8)" P-INDEP
-; V86 tmp79 [V86,T26] ( 2, 1 ) long -> rcx "field V58._ticks (fldOffset=0x0)" P-INDEP
-; V87 tmp80 [V87,T21] ( 2, 2 ) ref -> rax "field V60._node (fldOffset=0x0)" P-INDEP
-; V88 tmp81 [V88,T23] ( 2, 2 ) long -> r15 "field V60._id (fldOffset=0x8)" P-INDEP
-; V89 tmp82 [V89,T14] ( 3, 3 ) long -> rdi "index expr"
-; V90 PSPSym [V90,T28] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
-;* V91 cse0 [V91,T24] ( 0, 0 ) byref -> zero-ref multi-def "CSE #02: moderate"
-; V92 cse1 [V92,T25] ( 2, 1 ) ref -> r15 "CSE #04: conservative"
+;* V44 tmp37 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V45 tmp38 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V46 tmp39 [V46 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V47 tmp40 [V47 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V48 tmp41 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V49 tmp42 [V49 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V51 tmp44 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V52 tmp45 [V52 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V53 tmp46 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V54 tmp47 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V55 tmp48 [V55,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V56 tmp49 [V56 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V57 tmp50 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V58 tmp51 [V58 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V59 tmp52 [V59,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V60 tmp53 [V60 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V61 tmp54 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
+; V62 tmp55 [V62,T12] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]>
+;* V63 tmp56 [V63 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
+;* V64 tmp57 [V64 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V65 tmp58 [V65 ] ( 4, 4 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
+; V66 tmp59 [V66 ] ( 3, 1 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
+;* V67 tmp60 [V67,T35] ( 0, 0 ) long -> zero-ref "field V15._ticks (fldOffset=0x0)" P-INDEP
+;* V68 tmp61 [V68 ] ( 0, 0 ) long -> zero-ref "field V16._ticks (fldOffset=0x0)" P-INDEP
+;* V69 tmp62 [V69 ] ( 0, 0 ) long -> zero-ref "field V30._lower (fldOffset=0x0)" P-INDEP
+;* V70 tmp63 [V70 ] ( 0, 0 ) long -> zero-ref "field V30._upper (fldOffset=0x8)" P-INDEP
+;* V71 tmp64 [V71 ] ( 0, 0 ) long -> zero-ref "field V31._lower (fldOffset=0x0)" P-INDEP
+;* V72 tmp65 [V72 ] ( 0, 0 ) long -> zero-ref "field V31._upper (fldOffset=0x8)" P-INDEP
+;* V73 tmp66 [V73 ] ( 0, 0 ) long -> zero-ref "field V32._lower (fldOffset=0x0)" P-INDEP
+;* V74 tmp67 [V74 ] ( 0, 0 ) long -> zero-ref "field V32._upper (fldOffset=0x8)" P-INDEP
+;* V75 tmp68 [V75 ] ( 0, 0 ) long -> zero-ref "field V35._lower (fldOffset=0x0)" P-INDEP
+; V76 tmp69 [V76,T15] ( 5, 2.50) long -> rdi "field V35._upper (fldOffset=0x8)" P-INDEP
+;* V77 tmp70 [V77 ] ( 0, 0 ) long -> zero-ref "field V44._lower (fldOffset=0x0)" P-INDEP
+;* V78 tmp71 [V78 ] ( 0, 0 ) long -> zero-ref "field V44._upper (fldOffset=0x8)" P-INDEP
+;* V79 tmp72 [V79 ] ( 0, 0 ) long -> zero-ref "field V48._lower (fldOffset=0x0)" P-INDEP
+;* V80 tmp73 [V80 ] ( 0, 0 ) long -> zero-ref "field V48._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp74 [V81 ] ( 0, 0 ) long -> zero-ref "field V50._lower (fldOffset=0x0)" P-INDEP
+;* V82 tmp75 [V82 ] ( 0, 0 ) long -> zero-ref "field V50._upper (fldOffset=0x8)" P-INDEP
+;* V83 tmp76 [V83 ] ( 0, 0 ) long -> zero-ref "field V51._lower (fldOffset=0x0)" P-INDEP
+;* V84 tmp77 [V84 ] ( 0, 0 ) long -> zero-ref "field V51._upper (fldOffset=0x8)" P-INDEP
+;* V85 tmp78 [V85 ] ( 0, 0 ) long -> zero-ref "field V53._lower (fldOffset=0x0)" P-INDEP
+;* V86 tmp79 [V86 ] ( 0, 0 ) long -> zero-ref "field V53._upper (fldOffset=0x8)" P-INDEP
+;* V87 tmp80 [V87 ] ( 0, 0 ) long -> zero-ref "field V57._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp81 [V88 ] ( 0, 0 ) long -> zero-ref "field V57._upper (fldOffset=0x8)" P-INDEP
+; V89 tmp82 [V89,T30] ( 2, 1 ) long -> rcx "field V61._ticks (fldOffset=0x0)" P-INDEP
+; V90 tmp83 [V90,T20] ( 2, 2 ) ref -> rax "field V63._node (fldOffset=0x0)" P-INDEP
+; V91 tmp84 [V91,T22] ( 2, 2 ) long -> r15 "field V63._id (fldOffset=0x8)" P-INDEP
+; V92 tmp85 [V92,T23] ( 2, 2 ) long -> rdi "index expr"
+; V93 PSPSym [V93,T32] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
+;* V94 cse0 [V94,T28] ( 0, 0 ) byref -> zero-ref multi-def "CSE #02: moderate"
+; V95 cse1 [V95,T27] ( 3, 1.50) long -> rax "CSE #04: conservative"
+; V96 cse2 [V96,T29] ( 2, 1 ) ref -> r15 "CSE #05: conservative"
+; V97 rat0 [V97,T24] ( 2, 2 ) long -> rax "TLS field access"
+; V98 rat1 [V98,T25] ( 2, 2 ) long -> rax "TLS access"
;
-; Lcl frame size = 64
+; Lcl frame size = 32
G_M15829_IG01:
push rbp
push r15
push r14
push r13
push rbx
- sub rsp, 64
- vzeroupper
- lea rbp, [rsp+0x60]
+ sub rsp, 32
+ lea rbp, [rsp+0x40]
xor eax, eax
mov qword ptr [rbp-0x30], rax
- mov qword ptr [rbp-0x60], rsp
+ mov qword ptr [rbp-0x40], rsp
mov gword ptr [rbp-0x28], r8
mov rbx, rdi
mov r15, rsi
mov r14d, edx
mov r13, rcx
- ;; size=46 bbWeight=1 PerfScore 11.00
+ ;; size=43 bbWeight=1 PerfScore 10.00
G_M15829_IG02:
mov dword ptr [rbx+0x34], 0xD1FFAB1E
lea rdi, bword ptr [rbx+0x40]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
test dword ptr [r15+0x34], 0xD1FFAB1E
jne SHORT G_M15829_IG05
;; size=29 bbWeight=1 PerfScore 6.75
G_M15829_IG03:
cmp gword ptr [r15+0x20], 0
jne SHORT G_M15829_IG04
lea rdi, bword ptr [r15+0x20]
test rdi, rdi
- je G_M15829_IG24
+ je G_M15829_IG25
mov rsi, rbx
xor rdx, rdx
call System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
test rax, rax
je SHORT G_M15829_IG06
;; size=35 bbWeight=0.50 PerfScore 4.25
G_M15829_IG04:
mov rdi, r15
mov rsi, rbx
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
call [rax]System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
test eax, eax
jne SHORT G_M15829_IG06
;; size=24 bbWeight=0.50 PerfScore 2.62
G_M15829_IG05:
mov rdi, rbx
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1[long]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
call [rax]System.Threading.Tasks.Task+CancellationPromise`1[long]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
;; size=18 bbWeight=0.50 PerfScore 1.88
G_M15829_IG06:
cmp r14d, -1
- je G_M15829_IG12
+ je G_M15829_IG13
;; size=10 bbWeight=1 PerfScore 1.25
G_M15829_IG07:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M15829_IG25
+ je G_M15829_IG26
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M15829_IG08:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]:<>9__3_1
mov r15, gword ptr [rdi]
test r15, r15
jne SHORT G_M15829_IG09
mov rdi, 0xD1FFAB1E ; System.Threading.TimerCallback
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]:<>9
mov rsi, gword ptr [rdi]
test rsi, rsi
- je G_M15829_IG27
+ je G_M15829_IG28
lea rdi, bword ptr [r15+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]:<.ctor>b__3_1(System.Object):this
mov qword ptr [r15+0x18], rdi
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]:<>9__3_1
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
;; size=99 bbWeight=0.50 PerfScore 6.38
G_M15829_IG09:
mov rax, 0xD1FFAB1E ; const ptr
cmp r13, gword ptr [rax]
je SHORT G_M15829_IG10
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
call [rax]System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
mov gword ptr [rbp-0x30], rax
- jmp G_M15829_IG19
+ jmp G_M15829_IG20
;; size=36 bbWeight=0.50 PerfScore 5.25
G_M15829_IG10:
mov rdi, 0xD1FFAB1E ; System.Threading.TimerQueueTimer
call CORINFO_HELP_NEWSFAST
mov r13, rax
- mov gword ptr [rbp-0x48], r13
lea rdi, bword ptr [r13+0x20]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r13+0x28]
- mov gword ptr [rbp-0x40], rbx
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [r13+0x48], -1
- mov rax, 0xD1FFAB1E ; const ptr
- mov r15, gword ptr [rax]
- mov gword ptr [rbp-0x50], r15
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov r15, gword ptr [rdi]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=85 bbWeight=0.50 PerfScore 5.75
+ call rax
+ add rax, 76
+ mov ecx, dword ptr [rax+0x10]
+ lea edx, [rcx-0x01]
+ mov dword ptr [rax+0x10], edx
+ movzx rax, cx
+ test eax, eax
+ je SHORT G_M15829_IG11
+ sar ecx, 16
+ jmp SHORT G_M15829_IG12
+ ;; size=110 bbWeight=0.50 PerfScore 9.75
G_M15829_IG11:
- call rax ; Interop+Sys:SchedGetCpu():int
- mov edi, eax
- mov rsi, rdi
- sar rsi, 63
- and rsi, 15
- add rsi, rdi
- and rsi, -16
- sub rdi, rsi
- cmp rdi, 16
- jae G_M15829_IG28
- mov r15, gword ptr [rbp-0x50]
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov ecx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M15829_IG12:
+ mov edi, ecx
+ and rdi, 15
mov rsi, gword ptr [r15+8*rdi+0x10]
- mov r13, gword ptr [rbp-0x48]
lea rdi, bword ptr [r13+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, r13
mov esi, r14d
mov edx, -1
mov rax, 0xD1FFAB1E ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
call [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
- mov rbx, gword ptr [rbp-0x40]
lea rdi, bword ptr [rbx+0x48]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- je SHORT G_M15829_IG12
- call CORINFO_HELP_POLL_GC
- ;; size=116 bbWeight=0.50 PerfScore 11.88
-G_M15829_IG12:
+ ;; size=55 bbWeight=0.50 PerfScore 4.88
+G_M15829_IG13:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M15829_IG26
+ je G_M15829_IG27
;; size=19 bbWeight=1 PerfScore 4.25
-G_M15829_IG13:
+G_M15829_IG14:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]:<>9__3_0
mov rsi, gword ptr [rdi]
test rsi, rsi
- jne SHORT G_M15829_IG15
+ jne SHORT G_M15829_IG16
;; size=18 bbWeight=1 PerfScore 3.50
-G_M15829_IG14:
+G_M15829_IG15:
mov rdi, 0xD1FFAB1E ; System.Action`2[System.Object,System.Threading.CancellationToken]
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]:<>9
mov rsi, gword ptr [rdi]
test rsi, rsi
- je G_M15829_IG27
+ je G_M15829_IG28
lea rdi, bword ptr [r14+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]:<.ctor>b__3_0(System.Object,System.Threading.CancellationToken):this
mov qword ptr [r14+0x18], rdi
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]:<>9__3_0
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rsi, r14
;; size=84 bbWeight=0.50 PerfScore 4.75
-G_M15829_IG15:
+G_M15829_IG16:
lea rdi, bword ptr [rbp-0x28]
mov rdx, rbx
xor ecx, ecx
xor r8d, r8d
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
call [rax]System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
mov r15, rdx
lea rdi, bword ptr [rbx+0x50]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [rbx+0x58], r15
test dword ptr [rbx+0x34], 0xD1FFAB1E
- je SHORT G_M15829_IG17
+ je SHORT G_M15829_IG18
;; size=52 bbWeight=1 PerfScore 11.50
-G_M15829_IG16:
+G_M15829_IG17:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1[long]:Cleanup():this
call [rax]System.Threading.Tasks.Task+CancellationPromise`1[long]:Cleanup():this
;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M15829_IG17:
+G_M15829_IG18:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M15829_IG18:
- add rsp, 64
+G_M15829_IG19:
+ add rsp, 32
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 3.75
-G_M15829_IG19:
+G_M15829_IG20:
mov edx, r14d
mov edi, 0x3E8
lea rsi, [rbp-0x38]
mulx rdi, rcx, rdi
mov qword ptr [rsi], rcx
mov rsi, qword ptr [rbp-0x38]
sar rdx, 63
and rdx, 0x3E8
sub rdi, rdx
test rdi, rdi
- jg SHORT G_M15829_IG22
+ jg SHORT G_M15829_IG23
test rdi, rdi
- jne SHORT G_M15829_IG20
+ jne SHORT G_M15829_IG21
mov rdx, 0xD1FFAB1E
cmp rsi, rdx
- ja SHORT G_M15829_IG22
+ ja SHORT G_M15829_IG23
;; size=63 bbWeight=0.50 PerfScore 5.50
-G_M15829_IG20:
+G_M15829_IG21:
cmp rdi, -1
- jl SHORT G_M15829_IG22
+ jl SHORT G_M15829_IG23
cmp rdi, -1
- jne SHORT G_M15829_IG21
+ jne SHORT G_M15829_IG22
mov rdi, 0xD1FFAB1E
cmp rsi, rdi
- jb SHORT G_M15829_IG22
+ jb SHORT G_M15829_IG23
;; size=27 bbWeight=0.50 PerfScore 2.00
-G_M15829_IG21:
+G_M15829_IG22:
lea rcx, [rsi+4*rsi]
add rcx, rcx
mov rdi, r13
mov rsi, r15
mov rdx, rbx
mov r8, -0x2710
mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x48]
call [rax]System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this
lea rdi, bword ptr [rbx+0x48]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- jmp SHORT G_M15829_IG23
+ jmp SHORT G_M15829_IG24
;; size=50 bbWeight=0.50 PerfScore 6.25
-G_M15829_IG22:
+G_M15829_IG23:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M15829_IG23:
+G_M15829_IG24:
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Threading.AsyncFlowControl:Undo():this
call [rax]System.Threading.AsyncFlowControl:Undo():this
- jmp G_M15829_IG12
+ jmp G_M15829_IG13
;; size=21 bbWeight=0.50 PerfScore 2.88
-G_M15829_IG24:
+G_M15829_IG25:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowNullReferenceException()
call [rax]System.ThrowHelper:ThrowNullReferenceException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M15829_IG25:
+G_M15829_IG26:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M15829_IG08
;; size=20 bbWeight=0 PerfScore 0.00
-G_M15829_IG26:
+G_M15829_IG27:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[long]
call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M15829_IG13
+ jmp G_M15829_IG14
;; size=20 bbWeight=0 PerfScore 0.00
-G_M15829_IG27:
+G_M15829_IG28:
mov rax, 0xD1FFAB1E ; code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
call [rax]System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M15829_IG28:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
G_M15829_IG29:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 16
- vzeroupper
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x60]
- ;; size=26 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x40]
+ ;; size=23 bbWeight=0 PerfScore 0.00
G_M15829_IG30:
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Threading.AsyncFlowControl:Undo():this
call [rax]System.Threading.AsyncFlowControl:Undo():this
nop
;; size=17 bbWeight=0 PerfScore 0.00
G_M15829_IG31:
add rsp, 16
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1021, prolog size 46, PerfScore 105.50, instruction count 241, allocated bytes for code 1021 (MethodHash=cab3c22a) for method System.Threading.Tasks.Task+CancellationPromise`1[long]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 987, prolog size 43, PerfScore 103.25, instruction count 233, allocated bytes for code 987 (MethodHash=cab3c22a) for method System.Threading.Tasks.Task+CancellationPromise`1[long]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
-34 (-3.33 % of base) - System.Threading.Tasks.Task+CancellationPromise`1[short]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this
; Assembly listing for method System.Threading.Tasks.Task+CancellationPromise`1[short]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):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; 28 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 16, 12 ) ref -> [rbp-0x40] this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[short]>
+; V00 this [V00,T00] ( 16, 12 ) ref -> rbx this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[short]>
; V01 arg1 [V01,T01] ( 8, 6 ) ref -> r15 class-hnd single-def <System.Threading.Tasks.Task>
; V02 arg2 [V02,T03] ( 5, 4 ) int -> r14 single-def
; V03 arg3 [V03,T04] ( 5, 3.50) ref -> r13 class-hnd single-def <System.TimeProvider>
; V04 arg4 [V04 ] ( 4, 4 ) struct ( 8) [rbp-0x28] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
;* V05 loc0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Threading.TimerCallback>
; V06 loc1 [V06 ] ( 3, 1 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.AsyncFlowControl>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T08] ( 2, 4 ) ref -> rsi class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V10 tmp3 [V10,T27] ( 0, 0 ) byref -> zero-ref single-def
+;* V10 tmp3 [V10,T31] ( 0, 0 ) byref -> zero-ref single-def
; V11 tmp4 [V11,T09] ( 4, 3.50) ref -> rsi
; V12 tmp5 [V12,T05] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Action`2[System.Object,System.Threading.CancellationToken]>
-; V13 tmp6 [V13,T19] ( 2, 2 ) ref -> r15 class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
-; V14 tmp7 [V14,T15] ( 5, 2.50) ref -> r15
+; V13 tmp6 [V13,T18] ( 2, 2 ) ref -> r15 class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
+; V14 tmp7 [V14,T14] ( 5, 2.50) ref -> r15
;* V15 tmp8 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "folding static readonly field struct" <System.TimeSpan>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.TimeSpan>
-; V17 tmp10 [V17,T02] ( 7, 7 ) ref -> [rbp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+; V17 tmp10 [V17,T02] ( 7, 7 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
; V18 tmp11 [V18,T06] ( 5, 5 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerCallback>
-; V19 tmp12 [V19,T17] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V19 tmp12 [V19,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V20 tmp13 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V21 tmp14 [V21,T10] ( 3, 3 ) byref -> rdi single-def "Inlining Arg"
; V22 tmp15 [V22,T11] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]>
-; V23 tmp16 [V23,T20] ( 2, 2 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-; V24 tmp17 [V24,T07] ( 4, 4 ) long -> rdi "impAppendStmt"
+; V23 tmp16 [V23,T19] ( 2, 2 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V24 tmp17 [V24 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V25 tmp18 [V25 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V26 tmp19 [V26 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V27 tmp20 [V27 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
-;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V30 tmp23 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V31 tmp24 [V31 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-; V33 tmp26 [V33,T13] ( 3, 3 ) long -> rdx "Inlining Arg"
-; V34 tmp27 [V34,T18] ( 4, 2 ) long -> rsi ld-addr-op "Inline ldloca(s) first use temp"
-;* V35 tmp28 [V35 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-; V36 tmp29 [V36 ] ( 2, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V37 tmp30 [V37,T22] ( 2, 2 ) long -> rdi "impAppendStmt"
-;* V38 tmp31 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V39 tmp32 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V40 tmp33 [V40 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V41 tmp34 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+; V26 tmp19 [V26,T26] ( 3, 1.50) int -> rcx "Inline return value spill temp"
+; V27 tmp20 [V27,T07] ( 4, 4 ) int -> rcx "dup spill"
+;* V28 tmp21 [V28 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V29 tmp22 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
+;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V33 tmp26 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V34 tmp27 [V34 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V35 tmp28 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+; V36 tmp29 [V36,T13] ( 3, 3 ) long -> rdx "Inlining Arg"
+; V37 tmp30 [V37,T17] ( 4, 2 ) long -> rsi ld-addr-op "Inline ldloca(s) first use temp"
+;* V38 tmp31 [V38 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
+; V39 tmp32 [V39 ] ( 2, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V40 tmp33 [V40,T21] ( 2, 2 ) long -> rdi "impAppendStmt"
+;* V41 tmp34 [V41 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V42 tmp35 [V42 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V43 tmp36 [V43 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V44 tmp37 [V44 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V45 tmp38 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V46 tmp39 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V47 tmp40 [V47 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V48 tmp41 [V48 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V49 tmp42 [V49 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V51 tmp44 [V51 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V52 tmp45 [V52,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V53 tmp46 [V53 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V54 tmp47 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V55 tmp48 [V55 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V56 tmp49 [V56,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V57 tmp50 [V57 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V58 tmp51 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-; V59 tmp52 [V59,T12] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]>
-;* V60 tmp53 [V60 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
-;* V61 tmp54 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V62 tmp55 [V62 ] ( 4, 4 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
-; V63 tmp56 [V63 ] ( 3, 1 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
-;* V64 tmp57 [V64,T31] ( 0, 0 ) long -> zero-ref "field V15._ticks (fldOffset=0x0)" P-INDEP
-;* V65 tmp58 [V65 ] ( 0, 0 ) long -> zero-ref "field V16._ticks (fldOffset=0x0)" P-INDEP
-;* V66 tmp59 [V66 ] ( 0, 0 ) long -> zero-ref "field V27._lower (fldOffset=0x0)" P-INDEP
-;* V67 tmp60 [V67 ] ( 0, 0 ) long -> zero-ref "field V27._upper (fldOffset=0x8)" P-INDEP
-;* V68 tmp61 [V68 ] ( 0, 0 ) long -> zero-ref "field V28._lower (fldOffset=0x0)" P-INDEP
-;* V69 tmp62 [V69 ] ( 0, 0 ) long -> zero-ref "field V28._upper (fldOffset=0x8)" P-INDEP
-;* V70 tmp63 [V70 ] ( 0, 0 ) long -> zero-ref "field V29._lower (fldOffset=0x0)" P-INDEP
-;* V71 tmp64 [V71 ] ( 0, 0 ) long -> zero-ref "field V29._upper (fldOffset=0x8)" P-INDEP
-;* V72 tmp65 [V72 ] ( 0, 0 ) long -> zero-ref "field V32._lower (fldOffset=0x0)" P-INDEP
-; V73 tmp66 [V73,T16] ( 5, 2.50) long -> rdi "field V32._upper (fldOffset=0x8)" P-INDEP
-;* V74 tmp67 [V74 ] ( 0, 0 ) long -> zero-ref "field V41._lower (fldOffset=0x0)" P-INDEP
-;* V75 tmp68 [V75 ] ( 0, 0 ) long -> zero-ref "field V41._upper (fldOffset=0x8)" P-INDEP
-;* V76 tmp69 [V76 ] ( 0, 0 ) long -> zero-ref "field V45._lower (fldOffset=0x0)" P-INDEP
-;* V77 tmp70 [V77 ] ( 0, 0 ) long -> zero-ref "field V45._upper (fldOffset=0x8)" P-INDEP
-;* V78 tmp71 [V78 ] ( 0, 0 ) long -> zero-ref "field V47._lower (fldOffset=0x0)" P-INDEP
-;* V79 tmp72 [V79 ] ( 0, 0 ) long -> zero-ref "field V47._upper (fldOffset=0x8)" P-INDEP
-;* V80 tmp73 [V80 ] ( 0, 0 ) long -> zero-ref "field V48._lower (fldOffset=0x0)" P-INDEP
-;* V81 tmp74 [V81 ] ( 0, 0 ) long -> zero-ref "field V48._upper (fldOffset=0x8)" P-INDEP
-;* V82 tmp75 [V82 ] ( 0, 0 ) long -> zero-ref "field V50._lower (fldOffset=0x0)" P-INDEP
-;* V83 tmp76 [V83 ] ( 0, 0 ) long -> zero-ref "field V50._upper (fldOffset=0x8)" P-INDEP
-;* V84 tmp77 [V84 ] ( 0, 0 ) long -> zero-ref "field V54._lower (fldOffset=0x0)" P-INDEP
-;* V85 tmp78 [V85 ] ( 0, 0 ) long -> zero-ref "field V54._upper (fldOffset=0x8)" P-INDEP
-; V86 tmp79 [V86,T26] ( 2, 1 ) long -> rcx "field V58._ticks (fldOffset=0x0)" P-INDEP
-; V87 tmp80 [V87,T21] ( 2, 2 ) ref -> rax "field V60._node (fldOffset=0x0)" P-INDEP
-; V88 tmp81 [V88,T23] ( 2, 2 ) long -> r15 "field V60._id (fldOffset=0x8)" P-INDEP
-; V89 tmp82 [V89,T14] ( 3, 3 ) long -> rdi "index expr"
-; V90 PSPSym [V90,T28] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
-;* V91 cse0 [V91,T24] ( 0, 0 ) byref -> zero-ref multi-def "CSE #02: moderate"
-; V92 cse1 [V92,T25] ( 2, 1 ) ref -> r15 "CSE #04: conservative"
+;* V44 tmp37 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V45 tmp38 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V46 tmp39 [V46 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V47 tmp40 [V47 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V48 tmp41 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V49 tmp42 [V49 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V51 tmp44 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V52 tmp45 [V52 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V53 tmp46 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V54 tmp47 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V55 tmp48 [V55,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V56 tmp49 [V56 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V57 tmp50 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V58 tmp51 [V58 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V59 tmp52 [V59,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V60 tmp53 [V60 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V61 tmp54 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
+; V62 tmp55 [V62,T12] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]>
+;* V63 tmp56 [V63 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
+;* V64 tmp57 [V64 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V65 tmp58 [V65 ] ( 4, 4 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
+; V66 tmp59 [V66 ] ( 3, 1 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
+;* V67 tmp60 [V67,T35] ( 0, 0 ) long -> zero-ref "field V15._ticks (fldOffset=0x0)" P-INDEP
+;* V68 tmp61 [V68 ] ( 0, 0 ) long -> zero-ref "field V16._ticks (fldOffset=0x0)" P-INDEP
+;* V69 tmp62 [V69 ] ( 0, 0 ) long -> zero-ref "field V30._lower (fldOffset=0x0)" P-INDEP
+;* V70 tmp63 [V70 ] ( 0, 0 ) long -> zero-ref "field V30._upper (fldOffset=0x8)" P-INDEP
+;* V71 tmp64 [V71 ] ( 0, 0 ) long -> zero-ref "field V31._lower (fldOffset=0x0)" P-INDEP
+;* V72 tmp65 [V72 ] ( 0, 0 ) long -> zero-ref "field V31._upper (fldOffset=0x8)" P-INDEP
+;* V73 tmp66 [V73 ] ( 0, 0 ) long -> zero-ref "field V32._lower (fldOffset=0x0)" P-INDEP
+;* V74 tmp67 [V74 ] ( 0, 0 ) long -> zero-ref "field V32._upper (fldOffset=0x8)" P-INDEP
+;* V75 tmp68 [V75 ] ( 0, 0 ) long -> zero-ref "field V35._lower (fldOffset=0x0)" P-INDEP
+; V76 tmp69 [V76,T15] ( 5, 2.50) long -> rdi "field V35._upper (fldOffset=0x8)" P-INDEP
+;* V77 tmp70 [V77 ] ( 0, 0 ) long -> zero-ref "field V44._lower (fldOffset=0x0)" P-INDEP
+;* V78 tmp71 [V78 ] ( 0, 0 ) long -> zero-ref "field V44._upper (fldOffset=0x8)" P-INDEP
+;* V79 tmp72 [V79 ] ( 0, 0 ) long -> zero-ref "field V48._lower (fldOffset=0x0)" P-INDEP
+;* V80 tmp73 [V80 ] ( 0, 0 ) long -> zero-ref "field V48._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp74 [V81 ] ( 0, 0 ) long -> zero-ref "field V50._lower (fldOffset=0x0)" P-INDEP
+;* V82 tmp75 [V82 ] ( 0, 0 ) long -> zero-ref "field V50._upper (fldOffset=0x8)" P-INDEP
+;* V83 tmp76 [V83 ] ( 0, 0 ) long -> zero-ref "field V51._lower (fldOffset=0x0)" P-INDEP
+;* V84 tmp77 [V84 ] ( 0, 0 ) long -> zero-ref "field V51._upper (fldOffset=0x8)" P-INDEP
+;* V85 tmp78 [V85 ] ( 0, 0 ) long -> zero-ref "field V53._lower (fldOffset=0x0)" P-INDEP
+;* V86 tmp79 [V86 ] ( 0, 0 ) long -> zero-ref "field V53._upper (fldOffset=0x8)" P-INDEP
+;* V87 tmp80 [V87 ] ( 0, 0 ) long -> zero-ref "field V57._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp81 [V88 ] ( 0, 0 ) long -> zero-ref "field V57._upper (fldOffset=0x8)" P-INDEP
+; V89 tmp82 [V89,T30] ( 2, 1 ) long -> rcx "field V61._ticks (fldOffset=0x0)" P-INDEP
+; V90 tmp83 [V90,T20] ( 2, 2 ) ref -> rax "field V63._node (fldOffset=0x0)" P-INDEP
+; V91 tmp84 [V91,T22] ( 2, 2 ) long -> r15 "field V63._id (fldOffset=0x8)" P-INDEP
+; V92 tmp85 [V92,T23] ( 2, 2 ) long -> rdi "index expr"
+; V93 PSPSym [V93,T32] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
+;* V94 cse0 [V94,T28] ( 0, 0 ) byref -> zero-ref multi-def "CSE #02: moderate"
+; V95 cse1 [V95,T27] ( 3, 1.50) long -> rax "CSE #04: conservative"
+; V96 cse2 [V96,T29] ( 2, 1 ) ref -> r15 "CSE #05: conservative"
+; V97 rat0 [V97,T24] ( 2, 2 ) long -> rax "TLS field access"
+; V98 rat1 [V98,T25] ( 2, 2 ) long -> rax "TLS access"
;
-; Lcl frame size = 64
+; Lcl frame size = 32
G_M20973_IG01:
push rbp
push r15
push r14
push r13
push rbx
- sub rsp, 64
- vzeroupper
- lea rbp, [rsp+0x60]
+ sub rsp, 32
+ lea rbp, [rsp+0x40]
xor eax, eax
mov qword ptr [rbp-0x30], rax
- mov qword ptr [rbp-0x60], rsp
+ mov qword ptr [rbp-0x40], rsp
mov gword ptr [rbp-0x28], r8
mov rbx, rdi
mov r15, rsi
mov r14d, edx
mov r13, rcx
- ;; size=46 bbWeight=1 PerfScore 11.00
+ ;; size=43 bbWeight=1 PerfScore 10.00
G_M20973_IG02:
mov dword ptr [rbx+0x34], 0xD1FFAB1E
lea rdi, bword ptr [rbx+0x40]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
test dword ptr [r15+0x34], 0xD1FFAB1E
jne SHORT G_M20973_IG05
;; size=29 bbWeight=1 PerfScore 6.75
G_M20973_IG03:
cmp gword ptr [r15+0x20], 0
jne SHORT G_M20973_IG04
lea rdi, bword ptr [r15+0x20]
test rdi, rdi
- je G_M20973_IG24
+ je G_M20973_IG25
mov rsi, rbx
xor rdx, rdx
call System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
test rax, rax
je SHORT G_M20973_IG06
;; size=35 bbWeight=0.50 PerfScore 4.25
G_M20973_IG04:
mov rdi, r15
mov rsi, rbx
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
call [rax]System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
test eax, eax
jne SHORT G_M20973_IG06
;; size=24 bbWeight=0.50 PerfScore 2.62
G_M20973_IG05:
mov rdi, rbx
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1[short]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
call [rax]System.Threading.Tasks.Task+CancellationPromise`1[short]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
;; size=18 bbWeight=0.50 PerfScore 1.88
G_M20973_IG06:
cmp r14d, -1
- je G_M20973_IG12
+ je G_M20973_IG13
;; size=10 bbWeight=1 PerfScore 1.25
G_M20973_IG07:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M20973_IG25
+ je G_M20973_IG26
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M20973_IG08:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]:<>9__3_1
mov r15, gword ptr [rdi]
test r15, r15
jne SHORT G_M20973_IG09
mov rdi, 0xD1FFAB1E ; System.Threading.TimerCallback
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]:<>9
mov rsi, gword ptr [rdi]
test rsi, rsi
- je G_M20973_IG27
+ je G_M20973_IG28
lea rdi, bword ptr [r15+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]:<.ctor>b__3_1(System.Object):this
mov qword ptr [r15+0x18], rdi
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]:<>9__3_1
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
;; size=99 bbWeight=0.50 PerfScore 6.38
G_M20973_IG09:
mov rax, 0xD1FFAB1E ; const ptr
cmp r13, gword ptr [rax]
je SHORT G_M20973_IG10
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
call [rax]System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
mov gword ptr [rbp-0x30], rax
- jmp G_M20973_IG19
+ jmp G_M20973_IG20
;; size=36 bbWeight=0.50 PerfScore 5.25
G_M20973_IG10:
mov rdi, 0xD1FFAB1E ; System.Threading.TimerQueueTimer
call CORINFO_HELP_NEWSFAST
mov r13, rax
- mov gword ptr [rbp-0x48], r13
lea rdi, bword ptr [r13+0x20]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r13+0x28]
- mov gword ptr [rbp-0x40], rbx
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [r13+0x48], -1
- mov rax, 0xD1FFAB1E ; const ptr
- mov r15, gword ptr [rax]
- mov gword ptr [rbp-0x50], r15
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov r15, gword ptr [rdi]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=85 bbWeight=0.50 PerfScore 5.75
+ call rax
+ add rax, 76
+ mov ecx, dword ptr [rax+0x10]
+ lea edx, [rcx-0x01]
+ mov dword ptr [rax+0x10], edx
+ movzx rax, cx
+ test eax, eax
+ je SHORT G_M20973_IG11
+ sar ecx, 16
+ jmp SHORT G_M20973_IG12
+ ;; size=110 bbWeight=0.50 PerfScore 9.75
G_M20973_IG11:
- call rax ; Interop+Sys:SchedGetCpu():int
- mov edi, eax
- mov rsi, rdi
- sar rsi, 63
- and rsi, 15
- add rsi, rdi
- and rsi, -16
- sub rdi, rsi
- cmp rdi, 16
- jae G_M20973_IG28
- mov r15, gword ptr [rbp-0x50]
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov ecx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M20973_IG12:
+ mov edi, ecx
+ and rdi, 15
mov rsi, gword ptr [r15+8*rdi+0x10]
- mov r13, gword ptr [rbp-0x48]
lea rdi, bword ptr [r13+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, r13
mov esi, r14d
mov edx, -1
mov rax, 0xD1FFAB1E ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
call [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
- mov rbx, gword ptr [rbp-0x40]
lea rdi, bword ptr [rbx+0x48]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- je SHORT G_M20973_IG12
- call CORINFO_HELP_POLL_GC
- ;; size=116 bbWeight=0.50 PerfScore 11.88
-G_M20973_IG12:
+ ;; size=55 bbWeight=0.50 PerfScore 4.88
+G_M20973_IG13:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M20973_IG26
+ je G_M20973_IG27
;; size=19 bbWeight=1 PerfScore 4.25
-G_M20973_IG13:
+G_M20973_IG14:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]:<>9__3_0
mov rsi, gword ptr [rdi]
test rsi, rsi
- jne SHORT G_M20973_IG15
+ jne SHORT G_M20973_IG16
;; size=18 bbWeight=1 PerfScore 3.50
-G_M20973_IG14:
+G_M20973_IG15:
mov rdi, 0xD1FFAB1E ; System.Action`2[System.Object,System.Threading.CancellationToken]
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]:<>9
mov rsi, gword ptr [rdi]
test rsi, rsi
- je G_M20973_IG27
+ je G_M20973_IG28
lea rdi, bword ptr [r14+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]:<.ctor>b__3_0(System.Object,System.Threading.CancellationToken):this
mov qword ptr [r14+0x18], rdi
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]:<>9__3_0
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rsi, r14
;; size=84 bbWeight=0.50 PerfScore 4.75
-G_M20973_IG15:
+G_M20973_IG16:
lea rdi, bword ptr [rbp-0x28]
mov rdx, rbx
xor ecx, ecx
xor r8d, r8d
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
call [rax]System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
mov r15, rdx
lea rdi, bword ptr [rbx+0x50]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [rbx+0x58], r15
test dword ptr [rbx+0x34], 0xD1FFAB1E
- je SHORT G_M20973_IG17
+ je SHORT G_M20973_IG18
;; size=52 bbWeight=1 PerfScore 11.50
-G_M20973_IG16:
+G_M20973_IG17:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1[short]:Cleanup():this
call [rax]System.Threading.Tasks.Task+CancellationPromise`1[short]:Cleanup():this
;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M20973_IG17:
+G_M20973_IG18:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M20973_IG18:
- add rsp, 64
+G_M20973_IG19:
+ add rsp, 32
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 3.75
-G_M20973_IG19:
+G_M20973_IG20:
mov edx, r14d
mov edi, 0x3E8
lea rsi, [rbp-0x38]
mulx rdi, rcx, rdi
mov qword ptr [rsi], rcx
mov rsi, qword ptr [rbp-0x38]
sar rdx, 63
and rdx, 0x3E8
sub rdi, rdx
test rdi, rdi
- jg SHORT G_M20973_IG22
+ jg SHORT G_M20973_IG23
test rdi, rdi
- jne SHORT G_M20973_IG20
+ jne SHORT G_M20973_IG21
mov rdx, 0xD1FFAB1E
cmp rsi, rdx
- ja SHORT G_M20973_IG22
+ ja SHORT G_M20973_IG23
;; size=63 bbWeight=0.50 PerfScore 5.50
-G_M20973_IG20:
+G_M20973_IG21:
cmp rdi, -1
- jl SHORT G_M20973_IG22
+ jl SHORT G_M20973_IG23
cmp rdi, -1
- jne SHORT G_M20973_IG21
+ jne SHORT G_M20973_IG22
mov rdi, 0xD1FFAB1E
cmp rsi, rdi
- jb SHORT G_M20973_IG22
+ jb SHORT G_M20973_IG23
;; size=27 bbWeight=0.50 PerfScore 2.00
-G_M20973_IG21:
+G_M20973_IG22:
lea rcx, [rsi+4*rsi]
add rcx, rcx
mov rdi, r13
mov rsi, r15
mov rdx, rbx
mov r8, -0x2710
mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x48]
call [rax]System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this
lea rdi, bword ptr [rbx+0x48]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- jmp SHORT G_M20973_IG23
+ jmp SHORT G_M20973_IG24
;; size=50 bbWeight=0.50 PerfScore 6.25
-G_M20973_IG22:
+G_M20973_IG23:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M20973_IG23:
+G_M20973_IG24:
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Threading.AsyncFlowControl:Undo():this
call [rax]System.Threading.AsyncFlowControl:Undo():this
- jmp G_M20973_IG12
+ jmp G_M20973_IG13
;; size=21 bbWeight=0.50 PerfScore 2.88
-G_M20973_IG24:
+G_M20973_IG25:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowNullReferenceException()
call [rax]System.ThrowHelper:ThrowNullReferenceException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M20973_IG25:
+G_M20973_IG26:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M20973_IG08
;; size=20 bbWeight=0 PerfScore 0.00
-G_M20973_IG26:
+G_M20973_IG27:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[short]
call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M20973_IG13
+ jmp G_M20973_IG14
;; size=20 bbWeight=0 PerfScore 0.00
-G_M20973_IG27:
+G_M20973_IG28:
mov rax, 0xD1FFAB1E ; code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
call [rax]System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M20973_IG28:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
G_M20973_IG29:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 16
- vzeroupper
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x60]
- ;; size=26 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x40]
+ ;; size=23 bbWeight=0 PerfScore 0.00
G_M20973_IG30:
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Threading.AsyncFlowControl:Undo():this
call [rax]System.Threading.AsyncFlowControl:Undo():this
nop
;; size=17 bbWeight=0 PerfScore 0.00
G_M20973_IG31:
add rsp, 16
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1021, prolog size 46, PerfScore 105.50, instruction count 241, allocated bytes for code 1021 (MethodHash=5fd3ae12) for method System.Threading.Tasks.Task+CancellationPromise`1[short]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 987, prolog size 43, PerfScore 103.25, instruction count 233, allocated bytes for code 987 (MethodHash=5fd3ae12) for method System.Threading.Tasks.Task+CancellationPromise`1[short]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
-34 (-3.33 % of base) - System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this
; Assembly listing for method System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):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; 28 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 16, 12 ) ref -> [rbp-0x40] this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]>
+; V00 this [V00,T00] ( 16, 12 ) ref -> rbx this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]>
; V01 arg1 [V01,T01] ( 8, 6 ) ref -> r15 class-hnd single-def <System.Threading.Tasks.Task>
; V02 arg2 [V02,T03] ( 5, 4 ) int -> r14 single-def
; V03 arg3 [V03,T04] ( 5, 3.50) ref -> r13 class-hnd single-def <System.TimeProvider>
; V04 arg4 [V04 ] ( 4, 4 ) struct ( 8) [rbp-0x28] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
;* V05 loc0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Threading.TimerCallback>
; V06 loc1 [V06 ] ( 3, 1 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.AsyncFlowControl>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T08] ( 2, 4 ) ref -> rsi class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V10 tmp3 [V10,T27] ( 0, 0 ) byref -> zero-ref single-def
+;* V10 tmp3 [V10,T31] ( 0, 0 ) byref -> zero-ref single-def
; V11 tmp4 [V11,T09] ( 4, 3.50) ref -> rsi
; V12 tmp5 [V12,T05] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Action`2[System.Object,System.Threading.CancellationToken]>
-; V13 tmp6 [V13,T19] ( 2, 2 ) ref -> r15 class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
-; V14 tmp7 [V14,T15] ( 5, 2.50) ref -> r15
+; V13 tmp6 [V13,T18] ( 2, 2 ) ref -> r15 class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
+; V14 tmp7 [V14,T14] ( 5, 2.50) ref -> r15
;* V15 tmp8 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "folding static readonly field struct" <System.TimeSpan>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.TimeSpan>
-; V17 tmp10 [V17,T02] ( 7, 7 ) ref -> [rbp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+; V17 tmp10 [V17,T02] ( 7, 7 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
; V18 tmp11 [V18,T06] ( 5, 5 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerCallback>
-; V19 tmp12 [V19,T17] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V19 tmp12 [V19,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V20 tmp13 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V21 tmp14 [V21,T10] ( 3, 3 ) byref -> rdi single-def "Inlining Arg"
; V22 tmp15 [V22,T11] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]>
-; V23 tmp16 [V23,T20] ( 2, 2 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-; V24 tmp17 [V24,T07] ( 4, 4 ) long -> rdi "impAppendStmt"
+; V23 tmp16 [V23,T19] ( 2, 2 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V24 tmp17 [V24 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V25 tmp18 [V25 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V26 tmp19 [V26 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V27 tmp20 [V27 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
-;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V30 tmp23 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V31 tmp24 [V31 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-; V33 tmp26 [V33,T13] ( 3, 3 ) long -> rdx "Inlining Arg"
-; V34 tmp27 [V34,T18] ( 4, 2 ) long -> rsi ld-addr-op "Inline ldloca(s) first use temp"
-;* V35 tmp28 [V35 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-; V36 tmp29 [V36 ] ( 2, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V37 tmp30 [V37,T22] ( 2, 2 ) long -> rdi "impAppendStmt"
-;* V38 tmp31 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V39 tmp32 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V40 tmp33 [V40 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V41 tmp34 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+; V26 tmp19 [V26,T26] ( 3, 1.50) int -> rcx "Inline return value spill temp"
+; V27 tmp20 [V27,T07] ( 4, 4 ) int -> rcx "dup spill"
+;* V28 tmp21 [V28 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V29 tmp22 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
+;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V33 tmp26 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V34 tmp27 [V34 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V35 tmp28 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+; V36 tmp29 [V36,T13] ( 3, 3 ) long -> rdx "Inlining Arg"
+; V37 tmp30 [V37,T17] ( 4, 2 ) long -> rsi ld-addr-op "Inline ldloca(s) first use temp"
+;* V38 tmp31 [V38 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
+; V39 tmp32 [V39 ] ( 2, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V40 tmp33 [V40,T21] ( 2, 2 ) long -> rdi "impAppendStmt"
+;* V41 tmp34 [V41 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V42 tmp35 [V42 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V43 tmp36 [V43 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V44 tmp37 [V44 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V45 tmp38 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V46 tmp39 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V47 tmp40 [V47 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V48 tmp41 [V48 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V49 tmp42 [V49 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V51 tmp44 [V51 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V52 tmp45 [V52,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V53 tmp46 [V53 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V54 tmp47 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V55 tmp48 [V55 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V56 tmp49 [V56,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V57 tmp50 [V57 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V58 tmp51 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-; V59 tmp52 [V59,T12] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]>
-;* V60 tmp53 [V60 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
-;* V61 tmp54 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V62 tmp55 [V62 ] ( 4, 4 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
-; V63 tmp56 [V63 ] ( 3, 1 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
-;* V64 tmp57 [V64,T31] ( 0, 0 ) long -> zero-ref "field V15._ticks (fldOffset=0x0)" P-INDEP
-;* V65 tmp58 [V65 ] ( 0, 0 ) long -> zero-ref "field V16._ticks (fldOffset=0x0)" P-INDEP
-;* V66 tmp59 [V66 ] ( 0, 0 ) long -> zero-ref "field V27._lower (fldOffset=0x0)" P-INDEP
-;* V67 tmp60 [V67 ] ( 0, 0 ) long -> zero-ref "field V27._upper (fldOffset=0x8)" P-INDEP
-;* V68 tmp61 [V68 ] ( 0, 0 ) long -> zero-ref "field V28._lower (fldOffset=0x0)" P-INDEP
-;* V69 tmp62 [V69 ] ( 0, 0 ) long -> zero-ref "field V28._upper (fldOffset=0x8)" P-INDEP
-;* V70 tmp63 [V70 ] ( 0, 0 ) long -> zero-ref "field V29._lower (fldOffset=0x0)" P-INDEP
-;* V71 tmp64 [V71 ] ( 0, 0 ) long -> zero-ref "field V29._upper (fldOffset=0x8)" P-INDEP
-;* V72 tmp65 [V72 ] ( 0, 0 ) long -> zero-ref "field V32._lower (fldOffset=0x0)" P-INDEP
-; V73 tmp66 [V73,T16] ( 5, 2.50) long -> rdi "field V32._upper (fldOffset=0x8)" P-INDEP
-;* V74 tmp67 [V74 ] ( 0, 0 ) long -> zero-ref "field V41._lower (fldOffset=0x0)" P-INDEP
-;* V75 tmp68 [V75 ] ( 0, 0 ) long -> zero-ref "field V41._upper (fldOffset=0x8)" P-INDEP
-;* V76 tmp69 [V76 ] ( 0, 0 ) long -> zero-ref "field V45._lower (fldOffset=0x0)" P-INDEP
-;* V77 tmp70 [V77 ] ( 0, 0 ) long -> zero-ref "field V45._upper (fldOffset=0x8)" P-INDEP
-;* V78 tmp71 [V78 ] ( 0, 0 ) long -> zero-ref "field V47._lower (fldOffset=0x0)" P-INDEP
-;* V79 tmp72 [V79 ] ( 0, 0 ) long -> zero-ref "field V47._upper (fldOffset=0x8)" P-INDEP
-;* V80 tmp73 [V80 ] ( 0, 0 ) long -> zero-ref "field V48._lower (fldOffset=0x0)" P-INDEP
-;* V81 tmp74 [V81 ] ( 0, 0 ) long -> zero-ref "field V48._upper (fldOffset=0x8)" P-INDEP
-;* V82 tmp75 [V82 ] ( 0, 0 ) long -> zero-ref "field V50._lower (fldOffset=0x0)" P-INDEP
-;* V83 tmp76 [V83 ] ( 0, 0 ) long -> zero-ref "field V50._upper (fldOffset=0x8)" P-INDEP
-;* V84 tmp77 [V84 ] ( 0, 0 ) long -> zero-ref "field V54._lower (fldOffset=0x0)" P-INDEP
-;* V85 tmp78 [V85 ] ( 0, 0 ) long -> zero-ref "field V54._upper (fldOffset=0x8)" P-INDEP
-; V86 tmp79 [V86,T26] ( 2, 1 ) long -> rcx "field V58._ticks (fldOffset=0x0)" P-INDEP
-; V87 tmp80 [V87,T21] ( 2, 2 ) ref -> rax "field V60._node (fldOffset=0x0)" P-INDEP
-; V88 tmp81 [V88,T23] ( 2, 2 ) long -> r15 "field V60._id (fldOffset=0x8)" P-INDEP
-; V89 tmp82 [V89,T14] ( 3, 3 ) long -> rdi "index expr"
-; V90 PSPSym [V90,T28] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
-;* V91 cse0 [V91,T24] ( 0, 0 ) byref -> zero-ref multi-def "CSE #02: moderate"
-; V92 cse1 [V92,T25] ( 2, 1 ) ref -> r15 "CSE #04: conservative"
+;* V44 tmp37 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V45 tmp38 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V46 tmp39 [V46 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V47 tmp40 [V47 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V48 tmp41 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V49 tmp42 [V49 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V51 tmp44 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V52 tmp45 [V52 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V53 tmp46 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V54 tmp47 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V55 tmp48 [V55,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V56 tmp49 [V56 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V57 tmp50 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V58 tmp51 [V58 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V59 tmp52 [V59,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V60 tmp53 [V60 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V61 tmp54 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
+; V62 tmp55 [V62,T12] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]>
+;* V63 tmp56 [V63 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
+;* V64 tmp57 [V64 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V65 tmp58 [V65 ] ( 4, 4 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
+; V66 tmp59 [V66 ] ( 3, 1 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
+;* V67 tmp60 [V67,T35] ( 0, 0 ) long -> zero-ref "field V15._ticks (fldOffset=0x0)" P-INDEP
+;* V68 tmp61 [V68 ] ( 0, 0 ) long -> zero-ref "field V16._ticks (fldOffset=0x0)" P-INDEP
+;* V69 tmp62 [V69 ] ( 0, 0 ) long -> zero-ref "field V30._lower (fldOffset=0x0)" P-INDEP
+;* V70 tmp63 [V70 ] ( 0, 0 ) long -> zero-ref "field V30._upper (fldOffset=0x8)" P-INDEP
+;* V71 tmp64 [V71 ] ( 0, 0 ) long -> zero-ref "field V31._lower (fldOffset=0x0)" P-INDEP
+;* V72 tmp65 [V72 ] ( 0, 0 ) long -> zero-ref "field V31._upper (fldOffset=0x8)" P-INDEP
+;* V73 tmp66 [V73 ] ( 0, 0 ) long -> zero-ref "field V32._lower (fldOffset=0x0)" P-INDEP
+;* V74 tmp67 [V74 ] ( 0, 0 ) long -> zero-ref "field V32._upper (fldOffset=0x8)" P-INDEP
+;* V75 tmp68 [V75 ] ( 0, 0 ) long -> zero-ref "field V35._lower (fldOffset=0x0)" P-INDEP
+; V76 tmp69 [V76,T15] ( 5, 2.50) long -> rdi "field V35._upper (fldOffset=0x8)" P-INDEP
+;* V77 tmp70 [V77 ] ( 0, 0 ) long -> zero-ref "field V44._lower (fldOffset=0x0)" P-INDEP
+;* V78 tmp71 [V78 ] ( 0, 0 ) long -> zero-ref "field V44._upper (fldOffset=0x8)" P-INDEP
+;* V79 tmp72 [V79 ] ( 0, 0 ) long -> zero-ref "field V48._lower (fldOffset=0x0)" P-INDEP
+;* V80 tmp73 [V80 ] ( 0, 0 ) long -> zero-ref "field V48._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp74 [V81 ] ( 0, 0 ) long -> zero-ref "field V50._lower (fldOffset=0x0)" P-INDEP
+;* V82 tmp75 [V82 ] ( 0, 0 ) long -> zero-ref "field V50._upper (fldOffset=0x8)" P-INDEP
+;* V83 tmp76 [V83 ] ( 0, 0 ) long -> zero-ref "field V51._lower (fldOffset=0x0)" P-INDEP
+;* V84 tmp77 [V84 ] ( 0, 0 ) long -> zero-ref "field V51._upper (fldOffset=0x8)" P-INDEP
+;* V85 tmp78 [V85 ] ( 0, 0 ) long -> zero-ref "field V53._lower (fldOffset=0x0)" P-INDEP
+;* V86 tmp79 [V86 ] ( 0, 0 ) long -> zero-ref "field V53._upper (fldOffset=0x8)" P-INDEP
+;* V87 tmp80 [V87 ] ( 0, 0 ) long -> zero-ref "field V57._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp81 [V88 ] ( 0, 0 ) long -> zero-ref "field V57._upper (fldOffset=0x8)" P-INDEP
+; V89 tmp82 [V89,T30] ( 2, 1 ) long -> rcx "field V61._ticks (fldOffset=0x0)" P-INDEP
+; V90 tmp83 [V90,T20] ( 2, 2 ) ref -> rax "field V63._node (fldOffset=0x0)" P-INDEP
+; V91 tmp84 [V91,T22] ( 2, 2 ) long -> r15 "field V63._id (fldOffset=0x8)" P-INDEP
+; V92 tmp85 [V92,T23] ( 2, 2 ) long -> rdi "index expr"
+; V93 PSPSym [V93,T32] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
+;* V94 cse0 [V94,T28] ( 0, 0 ) byref -> zero-ref multi-def "CSE #02: moderate"
+; V95 cse1 [V95,T27] ( 3, 1.50) long -> rax "CSE #04: conservative"
+; V96 cse2 [V96,T29] ( 2, 1 ) ref -> r15 "CSE #05: conservative"
+; V97 rat0 [V97,T24] ( 2, 2 ) long -> rax "TLS field access"
+; V98 rat1 [V98,T25] ( 2, 2 ) long -> rax "TLS access"
;
-; Lcl frame size = 64
+; Lcl frame size = 32
G_M14689_IG01:
push rbp
push r15
push r14
push r13
push rbx
- sub rsp, 64
- vzeroupper
- lea rbp, [rsp+0x60]
+ sub rsp, 32
+ lea rbp, [rsp+0x40]
xor eax, eax
mov qword ptr [rbp-0x30], rax
- mov qword ptr [rbp-0x60], rsp
+ mov qword ptr [rbp-0x40], rsp
mov gword ptr [rbp-0x28], r8
mov rbx, rdi
mov r15, rsi
mov r14d, edx
mov r13, rcx
- ;; size=46 bbWeight=1 PerfScore 11.00
+ ;; size=43 bbWeight=1 PerfScore 10.00
G_M14689_IG02:
mov dword ptr [rbx+0x34], 0xD1FFAB1E
lea rdi, bword ptr [rbx+0x40]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
test dword ptr [r15+0x34], 0xD1FFAB1E
jne SHORT G_M14689_IG05
;; size=29 bbWeight=1 PerfScore 6.75
G_M14689_IG03:
cmp gword ptr [r15+0x20], 0
jne SHORT G_M14689_IG04
lea rdi, bword ptr [r15+0x20]
test rdi, rdi
- je G_M14689_IG24
+ je G_M14689_IG25
mov rsi, rbx
xor rdx, rdx
call System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
test rax, rax
je SHORT G_M14689_IG06
;; size=35 bbWeight=0.50 PerfScore 4.25
G_M14689_IG04:
mov rdi, r15
mov rsi, rbx
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
call [rax]System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
test eax, eax
jne SHORT G_M14689_IG06
;; size=24 bbWeight=0.50 PerfScore 2.62
G_M14689_IG05:
mov rdi, rbx
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
call [rax]System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
;; size=18 bbWeight=0.50 PerfScore 1.88
G_M14689_IG06:
cmp r14d, -1
- je G_M14689_IG12
+ je G_M14689_IG13
;; size=10 bbWeight=1 PerfScore 1.25
G_M14689_IG07:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M14689_IG25
+ je G_M14689_IG26
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M14689_IG08:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]:<>9__3_1
mov r15, gword ptr [rdi]
test r15, r15
jne SHORT G_M14689_IG09
mov rdi, 0xD1FFAB1E ; System.Threading.TimerCallback
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]:<>9
mov rsi, gword ptr [rdi]
test rsi, rsi
- je G_M14689_IG27
+ je G_M14689_IG28
lea rdi, bword ptr [r15+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]:<.ctor>b__3_1(System.Object):this
mov qword ptr [r15+0x18], rdi
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]:<>9__3_1
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
;; size=99 bbWeight=0.50 PerfScore 6.38
G_M14689_IG09:
mov rax, 0xD1FFAB1E ; const ptr
cmp r13, gword ptr [rax]
je SHORT G_M14689_IG10
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
call [rax]System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
mov gword ptr [rbp-0x30], rax
- jmp G_M14689_IG19
+ jmp G_M14689_IG20
;; size=36 bbWeight=0.50 PerfScore 5.25
G_M14689_IG10:
mov rdi, 0xD1FFAB1E ; System.Threading.TimerQueueTimer
call CORINFO_HELP_NEWSFAST
mov r13, rax
- mov gword ptr [rbp-0x48], r13
lea rdi, bword ptr [r13+0x20]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r13+0x28]
- mov gword ptr [rbp-0x40], rbx
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [r13+0x48], -1
- mov rax, 0xD1FFAB1E ; const ptr
- mov r15, gword ptr [rax]
- mov gword ptr [rbp-0x50], r15
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov r15, gword ptr [rdi]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=85 bbWeight=0.50 PerfScore 5.75
+ call rax
+ add rax, 76
+ mov ecx, dword ptr [rax+0x10]
+ lea edx, [rcx-0x01]
+ mov dword ptr [rax+0x10], edx
+ movzx rax, cx
+ test eax, eax
+ je SHORT G_M14689_IG11
+ sar ecx, 16
+ jmp SHORT G_M14689_IG12
+ ;; size=110 bbWeight=0.50 PerfScore 9.75
G_M14689_IG11:
- call rax ; Interop+Sys:SchedGetCpu():int
- mov edi, eax
- mov rsi, rdi
- sar rsi, 63
- and rsi, 15
- add rsi, rdi
- and rsi, -16
- sub rdi, rsi
- cmp rdi, 16
- jae G_M14689_IG28
- mov r15, gword ptr [rbp-0x50]
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov ecx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M14689_IG12:
+ mov edi, ecx
+ and rdi, 15
mov rsi, gword ptr [r15+8*rdi+0x10]
- mov r13, gword ptr [rbp-0x48]
lea rdi, bword ptr [r13+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, r13
mov esi, r14d
mov edx, -1
mov rax, 0xD1FFAB1E ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
call [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
- mov rbx, gword ptr [rbp-0x40]
lea rdi, bword ptr [rbx+0x48]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- je SHORT G_M14689_IG12
- call CORINFO_HELP_POLL_GC
- ;; size=116 bbWeight=0.50 PerfScore 11.88
-G_M14689_IG12:
+ ;; size=55 bbWeight=0.50 PerfScore 4.88
+G_M14689_IG13:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M14689_IG26
+ je G_M14689_IG27
;; size=19 bbWeight=1 PerfScore 4.25
-G_M14689_IG13:
+G_M14689_IG14:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]:<>9__3_0
mov rsi, gword ptr [rdi]
test rsi, rsi
- jne SHORT G_M14689_IG15
+ jne SHORT G_M14689_IG16
;; size=18 bbWeight=1 PerfScore 3.50
-G_M14689_IG14:
+G_M14689_IG15:
mov rdi, 0xD1FFAB1E ; System.Action`2[System.Object,System.Threading.CancellationToken]
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]:<>9
mov rsi, gword ptr [rdi]
test rsi, rsi
- je G_M14689_IG27
+ je G_M14689_IG28
lea rdi, bword ptr [r14+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]:<.ctor>b__3_0(System.Object,System.Threading.CancellationToken):this
mov qword ptr [r14+0x18], rdi
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]:<>9__3_0
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rsi, r14
;; size=84 bbWeight=0.50 PerfScore 4.75
-G_M14689_IG15:
+G_M14689_IG16:
lea rdi, bword ptr [rbp-0x28]
mov rdx, rbx
xor ecx, ecx
xor r8d, r8d
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
call [rax]System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
mov r15, rdx
lea rdi, bword ptr [rbx+0x50]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [rbx+0x58], r15
test dword ptr [rbx+0x34], 0xD1FFAB1E
- je SHORT G_M14689_IG17
+ je SHORT G_M14689_IG18
;; size=52 bbWeight=1 PerfScore 11.50
-G_M14689_IG16:
+G_M14689_IG17:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]:Cleanup():this
call [rax]System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]:Cleanup():this
;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M14689_IG17:
+G_M14689_IG18:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M14689_IG18:
- add rsp, 64
+G_M14689_IG19:
+ add rsp, 32
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 3.75
-G_M14689_IG19:
+G_M14689_IG20:
mov edx, r14d
mov edi, 0x3E8
lea rsi, [rbp-0x38]
mulx rdi, rcx, rdi
mov qword ptr [rsi], rcx
mov rsi, qword ptr [rbp-0x38]
sar rdx, 63
and rdx, 0x3E8
sub rdi, rdx
test rdi, rdi
- jg SHORT G_M14689_IG22
+ jg SHORT G_M14689_IG23
test rdi, rdi
- jne SHORT G_M14689_IG20
+ jne SHORT G_M14689_IG21
mov rdx, 0xD1FFAB1E
cmp rsi, rdx
- ja SHORT G_M14689_IG22
+ ja SHORT G_M14689_IG23
;; size=63 bbWeight=0.50 PerfScore 5.50
-G_M14689_IG20:
+G_M14689_IG21:
cmp rdi, -1
- jl SHORT G_M14689_IG22
+ jl SHORT G_M14689_IG23
cmp rdi, -1
- jne SHORT G_M14689_IG21
+ jne SHORT G_M14689_IG22
mov rdi, 0xD1FFAB1E
cmp rsi, rdi
- jb SHORT G_M14689_IG22
+ jb SHORT G_M14689_IG23
;; size=27 bbWeight=0.50 PerfScore 2.00
-G_M14689_IG21:
+G_M14689_IG22:
lea rcx, [rsi+4*rsi]
add rcx, rcx
mov rdi, r13
mov rsi, r15
mov rdx, rbx
mov r8, -0x2710
mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x48]
call [rax]System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this
lea rdi, bword ptr [rbx+0x48]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- jmp SHORT G_M14689_IG23
+ jmp SHORT G_M14689_IG24
;; size=50 bbWeight=0.50 PerfScore 6.25
-G_M14689_IG22:
+G_M14689_IG23:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M14689_IG23:
+G_M14689_IG24:
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Threading.AsyncFlowControl:Undo():this
call [rax]System.Threading.AsyncFlowControl:Undo():this
- jmp G_M14689_IG12
+ jmp G_M14689_IG13
;; size=21 bbWeight=0.50 PerfScore 2.88
-G_M14689_IG24:
+G_M14689_IG25:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowNullReferenceException()
call [rax]System.ThrowHelper:ThrowNullReferenceException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M14689_IG25:
+G_M14689_IG26:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M14689_IG08
;; size=20 bbWeight=0 PerfScore 0.00
-G_M14689_IG26:
+G_M14689_IG27:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Nullable`1[int]]
call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M14689_IG13
+ jmp G_M14689_IG14
;; size=20 bbWeight=0 PerfScore 0.00
-G_M14689_IG27:
+G_M14689_IG28:
mov rax, 0xD1FFAB1E ; code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
call [rax]System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M14689_IG28:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
G_M14689_IG29:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 16
- vzeroupper
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x60]
- ;; size=26 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x40]
+ ;; size=23 bbWeight=0 PerfScore 0.00
G_M14689_IG30:
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Threading.AsyncFlowControl:Undo():this
call [rax]System.Threading.AsyncFlowControl:Undo():this
nop
;; size=17 bbWeight=0 PerfScore 0.00
G_M14689_IG31:
add rsp, 16
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1021, prolog size 46, PerfScore 105.50, instruction count 241, allocated bytes for code 1021 (MethodHash=9306c69e) for method System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 987, prolog size 43, PerfScore 103.25, instruction count 233, allocated bytes for code 987 (MethodHash=9306c69e) for method System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
-34 (-3.33 % of base) - System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this
; Assembly listing for method System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):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; 28 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 16, 12 ) ref -> [rbp-0x40] this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]>
+; V00 this [V00,T00] ( 16, 12 ) ref -> rbx this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]>
; V01 arg1 [V01,T01] ( 8, 6 ) ref -> r15 class-hnd single-def <System.Threading.Tasks.Task>
; V02 arg2 [V02,T03] ( 5, 4 ) int -> r14 single-def
; V03 arg3 [V03,T04] ( 5, 3.50) ref -> r13 class-hnd single-def <System.TimeProvider>
; V04 arg4 [V04 ] ( 4, 4 ) struct ( 8) [rbp-0x28] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
;* V05 loc0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Threading.TimerCallback>
; V06 loc1 [V06 ] ( 3, 1 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.AsyncFlowControl>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T08] ( 2, 4 ) ref -> rsi class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V10 tmp3 [V10,T27] ( 0, 0 ) byref -> zero-ref single-def
+;* V10 tmp3 [V10,T31] ( 0, 0 ) byref -> zero-ref single-def
; V11 tmp4 [V11,T09] ( 4, 3.50) ref -> rsi
; V12 tmp5 [V12,T05] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Action`2[System.Object,System.Threading.CancellationToken]>
-; V13 tmp6 [V13,T19] ( 2, 2 ) ref -> r15 class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
-; V14 tmp7 [V14,T15] ( 5, 2.50) ref -> r15
+; V13 tmp6 [V13,T18] ( 2, 2 ) ref -> r15 class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
+; V14 tmp7 [V14,T14] ( 5, 2.50) ref -> r15
;* V15 tmp8 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "folding static readonly field struct" <System.TimeSpan>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.TimeSpan>
-; V17 tmp10 [V17,T02] ( 7, 7 ) ref -> [rbp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+; V17 tmp10 [V17,T02] ( 7, 7 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
; V18 tmp11 [V18,T06] ( 5, 5 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerCallback>
-; V19 tmp12 [V19,T17] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V19 tmp12 [V19,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V20 tmp13 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V21 tmp14 [V21,T10] ( 3, 3 ) byref -> rdi single-def "Inlining Arg"
; V22 tmp15 [V22,T11] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]>
-; V23 tmp16 [V23,T20] ( 2, 2 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-; V24 tmp17 [V24,T07] ( 4, 4 ) long -> rdi "impAppendStmt"
+; V23 tmp16 [V23,T19] ( 2, 2 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V24 tmp17 [V24 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V25 tmp18 [V25 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V26 tmp19 [V26 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V27 tmp20 [V27 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
-;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V30 tmp23 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V31 tmp24 [V31 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-; V33 tmp26 [V33,T13] ( 3, 3 ) long -> rdx "Inlining Arg"
-; V34 tmp27 [V34,T18] ( 4, 2 ) long -> rsi ld-addr-op "Inline ldloca(s) first use temp"
-;* V35 tmp28 [V35 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-; V36 tmp29 [V36 ] ( 2, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V37 tmp30 [V37,T22] ( 2, 2 ) long -> rdi "impAppendStmt"
-;* V38 tmp31 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V39 tmp32 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V40 tmp33 [V40 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V41 tmp34 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+; V26 tmp19 [V26,T26] ( 3, 1.50) int -> rcx "Inline return value spill temp"
+; V27 tmp20 [V27,T07] ( 4, 4 ) int -> rcx "dup spill"
+;* V28 tmp21 [V28 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V29 tmp22 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
+;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V33 tmp26 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V34 tmp27 [V34 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V35 tmp28 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+; V36 tmp29 [V36,T13] ( 3, 3 ) long -> rdx "Inlining Arg"
+; V37 tmp30 [V37,T17] ( 4, 2 ) long -> rsi ld-addr-op "Inline ldloca(s) first use temp"
+;* V38 tmp31 [V38 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
+; V39 tmp32 [V39 ] ( 2, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V40 tmp33 [V40,T21] ( 2, 2 ) long -> rdi "impAppendStmt"
+;* V41 tmp34 [V41 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V42 tmp35 [V42 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V43 tmp36 [V43 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V44 tmp37 [V44 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V45 tmp38 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V46 tmp39 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V47 tmp40 [V47 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V48 tmp41 [V48 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V49 tmp42 [V49 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V51 tmp44 [V51 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V52 tmp45 [V52,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V53 tmp46 [V53 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V54 tmp47 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V55 tmp48 [V55 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V56 tmp49 [V56,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V57 tmp50 [V57 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V58 tmp51 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-; V59 tmp52 [V59,T12] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]>
-;* V60 tmp53 [V60 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
-;* V61 tmp54 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V62 tmp55 [V62 ] ( 4, 4 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
-; V63 tmp56 [V63 ] ( 3, 1 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
-;* V64 tmp57 [V64,T31] ( 0, 0 ) long -> zero-ref "field V15._ticks (fldOffset=0x0)" P-INDEP
-;* V65 tmp58 [V65 ] ( 0, 0 ) long -> zero-ref "field V16._ticks (fldOffset=0x0)" P-INDEP
-;* V66 tmp59 [V66 ] ( 0, 0 ) long -> zero-ref "field V27._lower (fldOffset=0x0)" P-INDEP
-;* V67 tmp60 [V67 ] ( 0, 0 ) long -> zero-ref "field V27._upper (fldOffset=0x8)" P-INDEP
-;* V68 tmp61 [V68 ] ( 0, 0 ) long -> zero-ref "field V28._lower (fldOffset=0x0)" P-INDEP
-;* V69 tmp62 [V69 ] ( 0, 0 ) long -> zero-ref "field V28._upper (fldOffset=0x8)" P-INDEP
-;* V70 tmp63 [V70 ] ( 0, 0 ) long -> zero-ref "field V29._lower (fldOffset=0x0)" P-INDEP
-;* V71 tmp64 [V71 ] ( 0, 0 ) long -> zero-ref "field V29._upper (fldOffset=0x8)" P-INDEP
-;* V72 tmp65 [V72 ] ( 0, 0 ) long -> zero-ref "field V32._lower (fldOffset=0x0)" P-INDEP
-; V73 tmp66 [V73,T16] ( 5, 2.50) long -> rdi "field V32._upper (fldOffset=0x8)" P-INDEP
-;* V74 tmp67 [V74 ] ( 0, 0 ) long -> zero-ref "field V41._lower (fldOffset=0x0)" P-INDEP
-;* V75 tmp68 [V75 ] ( 0, 0 ) long -> zero-ref "field V41._upper (fldOffset=0x8)" P-INDEP
-;* V76 tmp69 [V76 ] ( 0, 0 ) long -> zero-ref "field V45._lower (fldOffset=0x0)" P-INDEP
-;* V77 tmp70 [V77 ] ( 0, 0 ) long -> zero-ref "field V45._upper (fldOffset=0x8)" P-INDEP
-;* V78 tmp71 [V78 ] ( 0, 0 ) long -> zero-ref "field V47._lower (fldOffset=0x0)" P-INDEP
-;* V79 tmp72 [V79 ] ( 0, 0 ) long -> zero-ref "field V47._upper (fldOffset=0x8)" P-INDEP
-;* V80 tmp73 [V80 ] ( 0, 0 ) long -> zero-ref "field V48._lower (fldOffset=0x0)" P-INDEP
-;* V81 tmp74 [V81 ] ( 0, 0 ) long -> zero-ref "field V48._upper (fldOffset=0x8)" P-INDEP
-;* V82 tmp75 [V82 ] ( 0, 0 ) long -> zero-ref "field V50._lower (fldOffset=0x0)" P-INDEP
-;* V83 tmp76 [V83 ] ( 0, 0 ) long -> zero-ref "field V50._upper (fldOffset=0x8)" P-INDEP
-;* V84 tmp77 [V84 ] ( 0, 0 ) long -> zero-ref "field V54._lower (fldOffset=0x0)" P-INDEP
-;* V85 tmp78 [V85 ] ( 0, 0 ) long -> zero-ref "field V54._upper (fldOffset=0x8)" P-INDEP
-; V86 tmp79 [V86,T26] ( 2, 1 ) long -> rcx "field V58._ticks (fldOffset=0x0)" P-INDEP
-; V87 tmp80 [V87,T21] ( 2, 2 ) ref -> rax "field V60._node (fldOffset=0x0)" P-INDEP
-; V88 tmp81 [V88,T23] ( 2, 2 ) long -> r15 "field V60._id (fldOffset=0x8)" P-INDEP
-; V89 tmp82 [V89,T14] ( 3, 3 ) long -> rdi "index expr"
-; V90 PSPSym [V90,T28] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
-;* V91 cse0 [V91,T24] ( 0, 0 ) byref -> zero-ref multi-def "CSE #02: moderate"
-; V92 cse1 [V92,T25] ( 2, 1 ) ref -> r15 "CSE #04: conservative"
+;* V44 tmp37 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V45 tmp38 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V46 tmp39 [V46 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V47 tmp40 [V47 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V48 tmp41 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V49 tmp42 [V49 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V51 tmp44 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V52 tmp45 [V52 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V53 tmp46 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V54 tmp47 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V55 tmp48 [V55,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V56 tmp49 [V56 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V57 tmp50 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V58 tmp51 [V58 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V59 tmp52 [V59,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V60 tmp53 [V60 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V61 tmp54 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
+; V62 tmp55 [V62,T12] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]>
+;* V63 tmp56 [V63 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
+;* V64 tmp57 [V64 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V65 tmp58 [V65 ] ( 4, 4 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
+; V66 tmp59 [V66 ] ( 3, 1 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
+;* V67 tmp60 [V67,T35] ( 0, 0 ) long -> zero-ref "field V15._ticks (fldOffset=0x0)" P-INDEP
+;* V68 tmp61 [V68 ] ( 0, 0 ) long -> zero-ref "field V16._ticks (fldOffset=0x0)" P-INDEP
+;* V69 tmp62 [V69 ] ( 0, 0 ) long -> zero-ref "field V30._lower (fldOffset=0x0)" P-INDEP
+;* V70 tmp63 [V70 ] ( 0, 0 ) long -> zero-ref "field V30._upper (fldOffset=0x8)" P-INDEP
+;* V71 tmp64 [V71 ] ( 0, 0 ) long -> zero-ref "field V31._lower (fldOffset=0x0)" P-INDEP
+;* V72 tmp65 [V72 ] ( 0, 0 ) long -> zero-ref "field V31._upper (fldOffset=0x8)" P-INDEP
+;* V73 tmp66 [V73 ] ( 0, 0 ) long -> zero-ref "field V32._lower (fldOffset=0x0)" P-INDEP
+;* V74 tmp67 [V74 ] ( 0, 0 ) long -> zero-ref "field V32._upper (fldOffset=0x8)" P-INDEP
+;* V75 tmp68 [V75 ] ( 0, 0 ) long -> zero-ref "field V35._lower (fldOffset=0x0)" P-INDEP
+; V76 tmp69 [V76,T15] ( 5, 2.50) long -> rdi "field V35._upper (fldOffset=0x8)" P-INDEP
+;* V77 tmp70 [V77 ] ( 0, 0 ) long -> zero-ref "field V44._lower (fldOffset=0x0)" P-INDEP
+;* V78 tmp71 [V78 ] ( 0, 0 ) long -> zero-ref "field V44._upper (fldOffset=0x8)" P-INDEP
+;* V79 tmp72 [V79 ] ( 0, 0 ) long -> zero-ref "field V48._lower (fldOffset=0x0)" P-INDEP
+;* V80 tmp73 [V80 ] ( 0, 0 ) long -> zero-ref "field V48._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp74 [V81 ] ( 0, 0 ) long -> zero-ref "field V50._lower (fldOffset=0x0)" P-INDEP
+;* V82 tmp75 [V82 ] ( 0, 0 ) long -> zero-ref "field V50._upper (fldOffset=0x8)" P-INDEP
+;* V83 tmp76 [V83 ] ( 0, 0 ) long -> zero-ref "field V51._lower (fldOffset=0x0)" P-INDEP
+;* V84 tmp77 [V84 ] ( 0, 0 ) long -> zero-ref "field V51._upper (fldOffset=0x8)" P-INDEP
+;* V85 tmp78 [V85 ] ( 0, 0 ) long -> zero-ref "field V53._lower (fldOffset=0x0)" P-INDEP
+;* V86 tmp79 [V86 ] ( 0, 0 ) long -> zero-ref "field V53._upper (fldOffset=0x8)" P-INDEP
+;* V87 tmp80 [V87 ] ( 0, 0 ) long -> zero-ref "field V57._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp81 [V88 ] ( 0, 0 ) long -> zero-ref "field V57._upper (fldOffset=0x8)" P-INDEP
+; V89 tmp82 [V89,T30] ( 2, 1 ) long -> rcx "field V61._ticks (fldOffset=0x0)" P-INDEP
+; V90 tmp83 [V90,T20] ( 2, 2 ) ref -> rax "field V63._node (fldOffset=0x0)" P-INDEP
+; V91 tmp84 [V91,T22] ( 2, 2 ) long -> r15 "field V63._id (fldOffset=0x8)" P-INDEP
+; V92 tmp85 [V92,T23] ( 2, 2 ) long -> rdi "index expr"
+; V93 PSPSym [V93,T32] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
+;* V94 cse0 [V94,T28] ( 0, 0 ) byref -> zero-ref multi-def "CSE #02: moderate"
+; V95 cse1 [V95,T27] ( 3, 1.50) long -> rax "CSE #04: conservative"
+; V96 cse2 [V96,T29] ( 2, 1 ) ref -> r15 "CSE #05: conservative"
+; V97 rat0 [V97,T24] ( 2, 2 ) long -> rax "TLS field access"
+; V98 rat1 [V98,T25] ( 2, 2 ) long -> rax "TLS access"
;
-; Lcl frame size = 64
+; Lcl frame size = 32
G_M34140_IG01:
push rbp
push r15
push r14
push r13
push rbx
- sub rsp, 64
- vzeroupper
- lea rbp, [rsp+0x60]
+ sub rsp, 32
+ lea rbp, [rsp+0x40]
xor eax, eax
mov qword ptr [rbp-0x30], rax
- mov qword ptr [rbp-0x60], rsp
+ mov qword ptr [rbp-0x40], rsp
mov gword ptr [rbp-0x28], r8
mov rbx, rdi
mov r15, rsi
mov r14d, edx
mov r13, rcx
- ;; size=46 bbWeight=1 PerfScore 11.00
+ ;; size=43 bbWeight=1 PerfScore 10.00
G_M34140_IG02:
mov dword ptr [rbx+0x34], 0xD1FFAB1E
lea rdi, bword ptr [rbx+0x58]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
test dword ptr [r15+0x34], 0xD1FFAB1E
jne SHORT G_M34140_IG05
;; size=29 bbWeight=1 PerfScore 6.75
G_M34140_IG03:
cmp gword ptr [r15+0x20], 0
jne SHORT G_M34140_IG04
lea rdi, bword ptr [r15+0x20]
test rdi, rdi
- je G_M34140_IG24
+ je G_M34140_IG25
mov rsi, rbx
xor rdx, rdx
call System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
test rax, rax
je SHORT G_M34140_IG06
;; size=35 bbWeight=0.50 PerfScore 4.25
G_M34140_IG04:
mov rdi, r15
mov rsi, rbx
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
call [rax]System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
test eax, eax
jne SHORT G_M34140_IG06
;; size=24 bbWeight=0.50 PerfScore 2.62
G_M34140_IG05:
mov rdi, rbx
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
call [rax]System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
;; size=18 bbWeight=0.50 PerfScore 1.88
G_M34140_IG06:
cmp r14d, -1
- je G_M34140_IG12
+ je G_M34140_IG13
;; size=10 bbWeight=1 PerfScore 1.25
G_M34140_IG07:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M34140_IG25
+ je G_M34140_IG26
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M34140_IG08:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]:<>9__3_1
mov r15, gword ptr [rdi]
test r15, r15
jne SHORT G_M34140_IG09
mov rdi, 0xD1FFAB1E ; System.Threading.TimerCallback
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]:<>9
mov rsi, gword ptr [rdi]
test rsi, rsi
- je G_M34140_IG27
+ je G_M34140_IG28
lea rdi, bword ptr [r15+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]:<.ctor>b__3_1(System.Object):this
mov qword ptr [r15+0x18], rdi
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]:<>9__3_1
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
;; size=99 bbWeight=0.50 PerfScore 6.38
G_M34140_IG09:
mov rax, 0xD1FFAB1E ; const ptr
cmp r13, gword ptr [rax]
je SHORT G_M34140_IG10
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
call [rax]System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
mov gword ptr [rbp-0x30], rax
- jmp G_M34140_IG19
+ jmp G_M34140_IG20
;; size=36 bbWeight=0.50 PerfScore 5.25
G_M34140_IG10:
mov rdi, 0xD1FFAB1E ; System.Threading.TimerQueueTimer
call CORINFO_HELP_NEWSFAST
mov r13, rax
- mov gword ptr [rbp-0x48], r13
lea rdi, bword ptr [r13+0x20]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r13+0x28]
- mov gword ptr [rbp-0x40], rbx
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [r13+0x48], -1
- mov rax, 0xD1FFAB1E ; const ptr
- mov r15, gword ptr [rax]
- mov gword ptr [rbp-0x50], r15
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov r15, gword ptr [rdi]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=85 bbWeight=0.50 PerfScore 5.75
+ call rax
+ add rax, 76
+ mov ecx, dword ptr [rax+0x10]
+ lea edx, [rcx-0x01]
+ mov dword ptr [rax+0x10], edx
+ movzx rax, cx
+ test eax, eax
+ je SHORT G_M34140_IG11
+ sar ecx, 16
+ jmp SHORT G_M34140_IG12
+ ;; size=110 bbWeight=0.50 PerfScore 9.75
G_M34140_IG11:
- call rax ; Interop+Sys:SchedGetCpu():int
- mov edi, eax
- mov rsi, rdi
- sar rsi, 63
- and rsi, 15
- add rsi, rdi
- and rsi, -16
- sub rdi, rsi
- cmp rdi, 16
- jae G_M34140_IG28
- mov r15, gword ptr [rbp-0x50]
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov ecx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M34140_IG12:
+ mov edi, ecx
+ and rdi, 15
mov rsi, gword ptr [r15+8*rdi+0x10]
- mov r13, gword ptr [rbp-0x48]
lea rdi, bword ptr [r13+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, r13
mov esi, r14d
mov edx, -1
mov rax, 0xD1FFAB1E ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
call [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
- mov rbx, gword ptr [rbp-0x40]
lea rdi, bword ptr [rbx+0x60]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- je SHORT G_M34140_IG12
- call CORINFO_HELP_POLL_GC
- ;; size=116 bbWeight=0.50 PerfScore 11.88
-G_M34140_IG12:
+ ;; size=55 bbWeight=0.50 PerfScore 4.88
+G_M34140_IG13:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M34140_IG26
+ je G_M34140_IG27
;; size=19 bbWeight=1 PerfScore 4.25
-G_M34140_IG13:
+G_M34140_IG14:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]:<>9__3_0
mov rsi, gword ptr [rdi]
test rsi, rsi
- jne SHORT G_M34140_IG15
+ jne SHORT G_M34140_IG16
;; size=18 bbWeight=1 PerfScore 3.50
-G_M34140_IG14:
+G_M34140_IG15:
mov rdi, 0xD1FFAB1E ; System.Action`2[System.Object,System.Threading.CancellationToken]
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]:<>9
mov rsi, gword ptr [rdi]
test rsi, rsi
- je G_M34140_IG27
+ je G_M34140_IG28
lea rdi, bword ptr [r14+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]:<.ctor>b__3_0(System.Object,System.Threading.CancellationToken):this
mov qword ptr [r14+0x18], rdi
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]:<>9__3_0
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rsi, r14
;; size=84 bbWeight=0.50 PerfScore 4.75
-G_M34140_IG15:
+G_M34140_IG16:
lea rdi, bword ptr [rbp-0x28]
mov rdx, rbx
xor ecx, ecx
xor r8d, r8d
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
call [rax]System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
mov r15, rdx
lea rdi, bword ptr [rbx+0x68]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [rbx+0x70], r15
test dword ptr [rbx+0x34], 0xD1FFAB1E
- je SHORT G_M34140_IG17
+ je SHORT G_M34140_IG18
;; size=52 bbWeight=1 PerfScore 11.50
-G_M34140_IG16:
+G_M34140_IG17:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]:Cleanup():this
call [rax]System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]:Cleanup():this
;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M34140_IG17:
+G_M34140_IG18:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M34140_IG18:
- add rsp, 64
+G_M34140_IG19:
+ add rsp, 32
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 3.75
-G_M34140_IG19:
+G_M34140_IG20:
mov edx, r14d
mov edi, 0x3E8
lea rsi, [rbp-0x38]
mulx rdi, rcx, rdi
mov qword ptr [rsi], rcx
mov rsi, qword ptr [rbp-0x38]
sar rdx, 63
and rdx, 0x3E8
sub rdi, rdx
test rdi, rdi
- jg SHORT G_M34140_IG22
+ jg SHORT G_M34140_IG23
test rdi, rdi
- jne SHORT G_M34140_IG20
+ jne SHORT G_M34140_IG21
mov rdx, 0xD1FFAB1E
cmp rsi, rdx
- ja SHORT G_M34140_IG22
+ ja SHORT G_M34140_IG23
;; size=63 bbWeight=0.50 PerfScore 5.50
-G_M34140_IG20:
+G_M34140_IG21:
cmp rdi, -1
- jl SHORT G_M34140_IG22
+ jl SHORT G_M34140_IG23
cmp rdi, -1
- jne SHORT G_M34140_IG21
+ jne SHORT G_M34140_IG22
mov rdi, 0xD1FFAB1E
cmp rsi, rdi
- jb SHORT G_M34140_IG22
+ jb SHORT G_M34140_IG23
;; size=27 bbWeight=0.50 PerfScore 2.00
-G_M34140_IG21:
+G_M34140_IG22:
lea rcx, [rsi+4*rsi]
add rcx, rcx
mov rdi, r13
mov rsi, r15
mov rdx, rbx
mov r8, -0x2710
mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x48]
call [rax]System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this
lea rdi, bword ptr [rbx+0x60]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- jmp SHORT G_M34140_IG23
+ jmp SHORT G_M34140_IG24
;; size=50 bbWeight=0.50 PerfScore 6.25
-G_M34140_IG22:
+G_M34140_IG23:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M34140_IG23:
+G_M34140_IG24:
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Threading.AsyncFlowControl:Undo():this
call [rax]System.Threading.AsyncFlowControl:Undo():this
- jmp G_M34140_IG12
+ jmp G_M34140_IG13
;; size=21 bbWeight=0.50 PerfScore 2.88
-G_M34140_IG24:
+G_M34140_IG25:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowNullReferenceException()
call [rax]System.ThrowHelper:ThrowNullReferenceException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M34140_IG25:
+G_M34140_IG26:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M34140_IG08
;; size=20 bbWeight=0 PerfScore 0.00
-G_M34140_IG26:
+G_M34140_IG27:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.Numerics.Vector`1[float]]
call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M34140_IG13
+ jmp G_M34140_IG14
;; size=20 bbWeight=0 PerfScore 0.00
-G_M34140_IG27:
+G_M34140_IG28:
mov rax, 0xD1FFAB1E ; code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
call [rax]System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M34140_IG28:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
G_M34140_IG29:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 16
- vzeroupper
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x60]
- ;; size=26 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x40]
+ ;; size=23 bbWeight=0 PerfScore 0.00
G_M34140_IG30:
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Threading.AsyncFlowControl:Undo():this
call [rax]System.Threading.AsyncFlowControl:Undo():this
nop
;; size=17 bbWeight=0 PerfScore 0.00
G_M34140_IG31:
add rsp, 16
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1021, prolog size 46, PerfScore 105.50, instruction count 241, allocated bytes for code 1021 (MethodHash=f4ef7aa3) for method System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 987, prolog size 43, PerfScore 103.25, instruction count 233, allocated bytes for code 987 (MethodHash=f4ef7aa3) for method System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
-34 (-3.33 % of base) - System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this
; Assembly listing for method System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):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; 28 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 16, 12 ) ref -> [rbp-0x40] this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[ubyte]>
+; V00 this [V00,T00] ( 16, 12 ) ref -> rbx this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[ubyte]>
; V01 arg1 [V01,T01] ( 8, 6 ) ref -> r15 class-hnd single-def <System.Threading.Tasks.Task>
; V02 arg2 [V02,T03] ( 5, 4 ) int -> r14 single-def
; V03 arg3 [V03,T04] ( 5, 3.50) ref -> r13 class-hnd single-def <System.TimeProvider>
; V04 arg4 [V04 ] ( 4, 4 ) struct ( 8) [rbp-0x28] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
;* V05 loc0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Threading.TimerCallback>
; V06 loc1 [V06 ] ( 3, 1 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.AsyncFlowControl>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T08] ( 2, 4 ) ref -> rsi class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]>
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V10 tmp3 [V10,T27] ( 0, 0 ) byref -> zero-ref single-def
+;* V10 tmp3 [V10,T31] ( 0, 0 ) byref -> zero-ref single-def
; V11 tmp4 [V11,T09] ( 4, 3.50) ref -> rsi
; V12 tmp5 [V12,T05] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Action`2[System.Object,System.Threading.CancellationToken]>
-; V13 tmp6 [V13,T19] ( 2, 2 ) ref -> r15 class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
-; V14 tmp7 [V14,T15] ( 5, 2.50) ref -> r15
+; V13 tmp6 [V13,T18] ( 2, 2 ) ref -> r15 class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
+; V14 tmp7 [V14,T14] ( 5, 2.50) ref -> r15
;* V15 tmp8 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "folding static readonly field struct" <System.TimeSpan>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.TimeSpan>
-; V17 tmp10 [V17,T02] ( 7, 7 ) ref -> [rbp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+; V17 tmp10 [V17,T02] ( 7, 7 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
; V18 tmp11 [V18,T06] ( 5, 5 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerCallback>
-; V19 tmp12 [V19,T17] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V19 tmp12 [V19,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V20 tmp13 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V21 tmp14 [V21,T10] ( 3, 3 ) byref -> rdi single-def "Inlining Arg"
; V22 tmp15 [V22,T11] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]>
-; V23 tmp16 [V23,T20] ( 2, 2 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-; V24 tmp17 [V24,T07] ( 4, 4 ) long -> rdi "impAppendStmt"
+; V23 tmp16 [V23,T19] ( 2, 2 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V24 tmp17 [V24 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V25 tmp18 [V25 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V26 tmp19 [V26 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V27 tmp20 [V27 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
-;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V29 tmp22 [V29 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V30 tmp23 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V31 tmp24 [V31 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-; V33 tmp26 [V33,T13] ( 3, 3 ) long -> rdx "Inlining Arg"
-; V34 tmp27 [V34,T18] ( 4, 2 ) long -> rsi ld-addr-op "Inline ldloca(s) first use temp"
-;* V35 tmp28 [V35 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-; V36 tmp29 [V36 ] ( 2, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V37 tmp30 [V37,T22] ( 2, 2 ) long -> rdi "impAppendStmt"
-;* V38 tmp31 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V39 tmp32 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V40 tmp33 [V40 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V41 tmp34 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+; V26 tmp19 [V26,T26] ( 3, 1.50) int -> rcx "Inline return value spill temp"
+; V27 tmp20 [V27,T07] ( 4, 4 ) int -> rcx "dup spill"
+;* V28 tmp21 [V28 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V29 tmp22 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V30 tmp23 [V30 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
+;* V31 tmp24 [V31 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V32 tmp25 [V32 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V33 tmp26 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V34 tmp27 [V34 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V35 tmp28 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+; V36 tmp29 [V36,T13] ( 3, 3 ) long -> rdx "Inlining Arg"
+; V37 tmp30 [V37,T17] ( 4, 2 ) long -> rsi ld-addr-op "Inline ldloca(s) first use temp"
+;* V38 tmp31 [V38 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
+; V39 tmp32 [V39 ] ( 2, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V40 tmp33 [V40,T21] ( 2, 2 ) long -> rdi "impAppendStmt"
+;* V41 tmp34 [V41 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V42 tmp35 [V42 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V43 tmp36 [V43 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V44 tmp37 [V44 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V45 tmp38 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V46 tmp39 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V47 tmp40 [V47 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V48 tmp41 [V48 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V49 tmp42 [V49 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V51 tmp44 [V51 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V52 tmp45 [V52,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V53 tmp46 [V53 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V54 tmp47 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V55 tmp48 [V55 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V56 tmp49 [V56,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V57 tmp50 [V57 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V58 tmp51 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-; V59 tmp52 [V59,T12] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]>
-;* V60 tmp53 [V60 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
-;* V61 tmp54 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V62 tmp55 [V62 ] ( 4, 4 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
-; V63 tmp56 [V63 ] ( 3, 1 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
-;* V64 tmp57 [V64,T31] ( 0, 0 ) long -> zero-ref "field V15._ticks (fldOffset=0x0)" P-INDEP
-;* V65 tmp58 [V65 ] ( 0, 0 ) long -> zero-ref "field V16._ticks (fldOffset=0x0)" P-INDEP
-;* V66 tmp59 [V66 ] ( 0, 0 ) long -> zero-ref "field V27._lower (fldOffset=0x0)" P-INDEP
-;* V67 tmp60 [V67 ] ( 0, 0 ) long -> zero-ref "field V27._upper (fldOffset=0x8)" P-INDEP
-;* V68 tmp61 [V68 ] ( 0, 0 ) long -> zero-ref "field V28._lower (fldOffset=0x0)" P-INDEP
-;* V69 tmp62 [V69 ] ( 0, 0 ) long -> zero-ref "field V28._upper (fldOffset=0x8)" P-INDEP
-;* V70 tmp63 [V70 ] ( 0, 0 ) long -> zero-ref "field V29._lower (fldOffset=0x0)" P-INDEP
-;* V71 tmp64 [V71 ] ( 0, 0 ) long -> zero-ref "field V29._upper (fldOffset=0x8)" P-INDEP
-;* V72 tmp65 [V72 ] ( 0, 0 ) long -> zero-ref "field V32._lower (fldOffset=0x0)" P-INDEP
-; V73 tmp66 [V73,T16] ( 5, 2.50) long -> rdi "field V32._upper (fldOffset=0x8)" P-INDEP
-;* V74 tmp67 [V74 ] ( 0, 0 ) long -> zero-ref "field V41._lower (fldOffset=0x0)" P-INDEP
-;* V75 tmp68 [V75 ] ( 0, 0 ) long -> zero-ref "field V41._upper (fldOffset=0x8)" P-INDEP
-;* V76 tmp69 [V76 ] ( 0, 0 ) long -> zero-ref "field V45._lower (fldOffset=0x0)" P-INDEP
-;* V77 tmp70 [V77 ] ( 0, 0 ) long -> zero-ref "field V45._upper (fldOffset=0x8)" P-INDEP
-;* V78 tmp71 [V78 ] ( 0, 0 ) long -> zero-ref "field V47._lower (fldOffset=0x0)" P-INDEP
-;* V79 tmp72 [V79 ] ( 0, 0 ) long -> zero-ref "field V47._upper (fldOffset=0x8)" P-INDEP
-;* V80 tmp73 [V80 ] ( 0, 0 ) long -> zero-ref "field V48._lower (fldOffset=0x0)" P-INDEP
-;* V81 tmp74 [V81 ] ( 0, 0 ) long -> zero-ref "field V48._upper (fldOffset=0x8)" P-INDEP
-;* V82 tmp75 [V82 ] ( 0, 0 ) long -> zero-ref "field V50._lower (fldOffset=0x0)" P-INDEP
-;* V83 tmp76 [V83 ] ( 0, 0 ) long -> zero-ref "field V50._upper (fldOffset=0x8)" P-INDEP
-;* V84 tmp77 [V84 ] ( 0, 0 ) long -> zero-ref "field V54._lower (fldOffset=0x0)" P-INDEP
-;* V85 tmp78 [V85 ] ( 0, 0 ) long -> zero-ref "field V54._upper (fldOffset=0x8)" P-INDEP
-; V86 tmp79 [V86,T26] ( 2, 1 ) long -> rcx "field V58._ticks (fldOffset=0x0)" P-INDEP
-; V87 tmp80 [V87,T21] ( 2, 2 ) ref -> rax "field V60._node (fldOffset=0x0)" P-INDEP
-; V88 tmp81 [V88,T23] ( 2, 2 ) long -> r15 "field V60._id (fldOffset=0x8)" P-INDEP
-; V89 tmp82 [V89,T14] ( 3, 3 ) long -> rdi "index expr"
-; V90 PSPSym [V90,T28] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
-;* V91 cse0 [V91,T24] ( 0, 0 ) byref -> zero-ref multi-def "CSE #02: moderate"
-; V92 cse1 [V92,T25] ( 2, 1 ) ref -> r15 "CSE #04: conservative"
+;* V44 tmp37 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V45 tmp38 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V46 tmp39 [V46 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V47 tmp40 [V47 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V48 tmp41 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V49 tmp42 [V49 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V51 tmp44 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V52 tmp45 [V52 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V53 tmp46 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V54 tmp47 [V54 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V55 tmp48 [V55,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V56 tmp49 [V56 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V57 tmp50 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V58 tmp51 [V58 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V59 tmp52 [V59,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V60 tmp53 [V60 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V61 tmp54 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
+; V62 tmp55 [V62,T12] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]>
+;* V63 tmp56 [V63 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
+;* V64 tmp57 [V64 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V65 tmp58 [V65 ] ( 4, 4 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
+; V66 tmp59 [V66 ] ( 3, 1 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
+;* V67 tmp60 [V67,T35] ( 0, 0 ) long -> zero-ref "field V15._ticks (fldOffset=0x0)" P-INDEP
+;* V68 tmp61 [V68 ] ( 0, 0 ) long -> zero-ref "field V16._ticks (fldOffset=0x0)" P-INDEP
+;* V69 tmp62 [V69 ] ( 0, 0 ) long -> zero-ref "field V30._lower (fldOffset=0x0)" P-INDEP
+;* V70 tmp63 [V70 ] ( 0, 0 ) long -> zero-ref "field V30._upper (fldOffset=0x8)" P-INDEP
+;* V71 tmp64 [V71 ] ( 0, 0 ) long -> zero-ref "field V31._lower (fldOffset=0x0)" P-INDEP
+;* V72 tmp65 [V72 ] ( 0, 0 ) long -> zero-ref "field V31._upper (fldOffset=0x8)" P-INDEP
+;* V73 tmp66 [V73 ] ( 0, 0 ) long -> zero-ref "field V32._lower (fldOffset=0x0)" P-INDEP
+;* V74 tmp67 [V74 ] ( 0, 0 ) long -> zero-ref "field V32._upper (fldOffset=0x8)" P-INDEP
+;* V75 tmp68 [V75 ] ( 0, 0 ) long -> zero-ref "field V35._lower (fldOffset=0x0)" P-INDEP
+; V76 tmp69 [V76,T15] ( 5, 2.50) long -> rdi "field V35._upper (fldOffset=0x8)" P-INDEP
+;* V77 tmp70 [V77 ] ( 0, 0 ) long -> zero-ref "field V44._lower (fldOffset=0x0)" P-INDEP
+;* V78 tmp71 [V78 ] ( 0, 0 ) long -> zero-ref "field V44._upper (fldOffset=0x8)" P-INDEP
+;* V79 tmp72 [V79 ] ( 0, 0 ) long -> zero-ref "field V48._lower (fldOffset=0x0)" P-INDEP
+;* V80 tmp73 [V80 ] ( 0, 0 ) long -> zero-ref "field V48._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp74 [V81 ] ( 0, 0 ) long -> zero-ref "field V50._lower (fldOffset=0x0)" P-INDEP
+;* V82 tmp75 [V82 ] ( 0, 0 ) long -> zero-ref "field V50._upper (fldOffset=0x8)" P-INDEP
+;* V83 tmp76 [V83 ] ( 0, 0 ) long -> zero-ref "field V51._lower (fldOffset=0x0)" P-INDEP
+;* V84 tmp77 [V84 ] ( 0, 0 ) long -> zero-ref "field V51._upper (fldOffset=0x8)" P-INDEP
+;* V85 tmp78 [V85 ] ( 0, 0 ) long -> zero-ref "field V53._lower (fldOffset=0x0)" P-INDEP
+;* V86 tmp79 [V86 ] ( 0, 0 ) long -> zero-ref "field V53._upper (fldOffset=0x8)" P-INDEP
+;* V87 tmp80 [V87 ] ( 0, 0 ) long -> zero-ref "field V57._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp81 [V88 ] ( 0, 0 ) long -> zero-ref "field V57._upper (fldOffset=0x8)" P-INDEP
+; V89 tmp82 [V89,T30] ( 2, 1 ) long -> rcx "field V61._ticks (fldOffset=0x0)" P-INDEP
+; V90 tmp83 [V90,T20] ( 2, 2 ) ref -> rax "field V63._node (fldOffset=0x0)" P-INDEP
+; V91 tmp84 [V91,T22] ( 2, 2 ) long -> r15 "field V63._id (fldOffset=0x8)" P-INDEP
+; V92 tmp85 [V92,T23] ( 2, 2 ) long -> rdi "index expr"
+; V93 PSPSym [V93,T32] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
+;* V94 cse0 [V94,T28] ( 0, 0 ) byref -> zero-ref multi-def "CSE #02: moderate"
+; V95 cse1 [V95,T27] ( 3, 1.50) long -> rax "CSE #04: conservative"
+; V96 cse2 [V96,T29] ( 2, 1 ) ref -> r15 "CSE #05: conservative"
+; V97 rat0 [V97,T24] ( 2, 2 ) long -> rax "TLS field access"
+; V98 rat1 [V98,T25] ( 2, 2 ) long -> rax "TLS access"
;
-; Lcl frame size = 64
+; Lcl frame size = 32
G_M61376_IG01:
push rbp
push r15
push r14
push r13
push rbx
- sub rsp, 64
- vzeroupper
- lea rbp, [rsp+0x60]
+ sub rsp, 32
+ lea rbp, [rsp+0x40]
xor eax, eax
mov qword ptr [rbp-0x30], rax
- mov qword ptr [rbp-0x60], rsp
+ mov qword ptr [rbp-0x40], rsp
mov gword ptr [rbp-0x28], r8
mov rbx, rdi
mov r15, rsi
mov r14d, edx
mov r13, rcx
- ;; size=46 bbWeight=1 PerfScore 11.00
+ ;; size=43 bbWeight=1 PerfScore 10.00
G_M61376_IG02:
mov dword ptr [rbx+0x34], 0xD1FFAB1E
lea rdi, bword ptr [rbx+0x40]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
test dword ptr [r15+0x34], 0xD1FFAB1E
jne SHORT G_M61376_IG05
;; size=29 bbWeight=1 PerfScore 6.75
G_M61376_IG03:
cmp gword ptr [r15+0x20], 0
jne SHORT G_M61376_IG04
lea rdi, bword ptr [r15+0x20]
test rdi, rdi
- je G_M61376_IG24
+ je G_M61376_IG25
mov rsi, rbx
xor rdx, rdx
call System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
test rax, rax
je SHORT G_M61376_IG06
;; size=35 bbWeight=0.50 PerfScore 4.25
G_M61376_IG04:
mov rdi, r15
mov rsi, rbx
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
call [rax]System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
test eax, eax
jne SHORT G_M61376_IG06
;; size=24 bbWeight=0.50 PerfScore 2.62
G_M61376_IG05:
mov rdi, rbx
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
call [rax]System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
;; size=18 bbWeight=0.50 PerfScore 1.88
G_M61376_IG06:
cmp r14d, -1
- je G_M61376_IG12
+ je G_M61376_IG13
;; size=10 bbWeight=1 PerfScore 1.25
G_M61376_IG07:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M61376_IG25
+ je G_M61376_IG26
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M61376_IG08:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]:<>9__3_1
mov r15, gword ptr [rdi]
test r15, r15
jne SHORT G_M61376_IG09
mov rdi, 0xD1FFAB1E ; System.Threading.TimerCallback
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]:<>9
mov rsi, gword ptr [rdi]
test rsi, rsi
- je G_M61376_IG27
+ je G_M61376_IG28
lea rdi, bword ptr [r15+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]:<.ctor>b__3_1(System.Object):this
mov qword ptr [r15+0x18], rdi
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]:<>9__3_1
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
;; size=99 bbWeight=0.50 PerfScore 6.38
G_M61376_IG09:
mov rax, 0xD1FFAB1E ; const ptr
cmp r13, gword ptr [rax]
je SHORT G_M61376_IG10
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
call [rax]System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
mov gword ptr [rbp-0x30], rax
- jmp G_M61376_IG19
+ jmp G_M61376_IG20
;; size=36 bbWeight=0.50 PerfScore 5.25
G_M61376_IG10:
mov rdi, 0xD1FFAB1E ; System.Threading.TimerQueueTimer
call CORINFO_HELP_NEWSFAST
mov r13, rax
- mov gword ptr [rbp-0x48], r13
lea rdi, bword ptr [r13+0x20]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r13+0x28]
- mov gword ptr [rbp-0x40], rbx
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [r13+0x48], -1
- mov rax, 0xD1FFAB1E ; const ptr
- mov r15, gword ptr [rax]
- mov gword ptr [rbp-0x50], r15
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov r15, gword ptr [rdi]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=85 bbWeight=0.50 PerfScore 5.75
+ call rax
+ add rax, 76
+ mov ecx, dword ptr [rax+0x10]
+ lea edx, [rcx-0x01]
+ mov dword ptr [rax+0x10], edx
+ movzx rax, cx
+ test eax, eax
+ je SHORT G_M61376_IG11
+ sar ecx, 16
+ jmp SHORT G_M61376_IG12
+ ;; size=110 bbWeight=0.50 PerfScore 9.75
G_M61376_IG11:
- call rax ; Interop+Sys:SchedGetCpu():int
- mov edi, eax
- mov rsi, rdi
- sar rsi, 63
- and rsi, 15
- add rsi, rdi
- and rsi, -16
- sub rdi, rsi
- cmp rdi, 16
- jae G_M61376_IG28
- mov r15, gword ptr [rbp-0x50]
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov ecx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M61376_IG12:
+ mov edi, ecx
+ and rdi, 15
mov rsi, gword ptr [r15+8*rdi+0x10]
- mov r13, gword ptr [rbp-0x48]
lea rdi, bword ptr [r13+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, r13
mov esi, r14d
mov edx, -1
mov rax, 0xD1FFAB1E ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
call [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
- mov rbx, gword ptr [rbp-0x40]
lea rdi, bword ptr [rbx+0x48]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- je SHORT G_M61376_IG12
- call CORINFO_HELP_POLL_GC
- ;; size=116 bbWeight=0.50 PerfScore 11.88
-G_M61376_IG12:
+ ;; size=55 bbWeight=0.50 PerfScore 4.88
+G_M61376_IG13:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M61376_IG26
+ je G_M61376_IG27
;; size=19 bbWeight=1 PerfScore 4.25
-G_M61376_IG13:
+G_M61376_IG14:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]:<>9__3_0
mov rsi, gword ptr [rdi]
test rsi, rsi
- jne SHORT G_M61376_IG15
+ jne SHORT G_M61376_IG16
;; size=18 bbWeight=1 PerfScore 3.50
-G_M61376_IG14:
+G_M61376_IG15:
mov rdi, 0xD1FFAB1E ; System.Action`2[System.Object,System.Threading.CancellationToken]
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]:<>9
mov rsi, gword ptr [rdi]
test rsi, rsi
- je G_M61376_IG27
+ je G_M61376_IG28
lea rdi, bword ptr [r14+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]:<.ctor>b__3_0(System.Object,System.Threading.CancellationToken):this
mov qword ptr [r14+0x18], rdi
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]:<>9__3_0
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rsi, r14
;; size=84 bbWeight=0.50 PerfScore 4.75
-G_M61376_IG15:
+G_M61376_IG16:
lea rdi, bword ptr [rbp-0x28]
mov rdx, rbx
xor ecx, ecx
xor r8d, r8d
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
call [rax]System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
mov r15, rdx
lea rdi, bword ptr [rbx+0x50]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [rbx+0x58], r15
test dword ptr [rbx+0x34], 0xD1FFAB1E
- je SHORT G_M61376_IG17
+ je SHORT G_M61376_IG18
;; size=52 bbWeight=1 PerfScore 11.50
-G_M61376_IG16:
+G_M61376_IG17:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:Cleanup():this
call [rax]System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:Cleanup():this
;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M61376_IG17:
+G_M61376_IG18:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M61376_IG18:
- add rsp, 64
+G_M61376_IG19:
+ add rsp, 32
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 3.75
-G_M61376_IG19:
+G_M61376_IG20:
mov edx, r14d
mov edi, 0x3E8
lea rsi, [rbp-0x38]
mulx rdi, rcx, rdi
mov qword ptr [rsi], rcx
mov rsi, qword ptr [rbp-0x38]
sar rdx, 63
and rdx, 0x3E8
sub rdi, rdx
test rdi, rdi
- jg SHORT G_M61376_IG22
+ jg SHORT G_M61376_IG23
test rdi, rdi
- jne SHORT G_M61376_IG20
+ jne SHORT G_M61376_IG21
mov rdx, 0xD1FFAB1E
cmp rsi, rdx
- ja SHORT G_M61376_IG22
+ ja SHORT G_M61376_IG23
;; size=63 bbWeight=0.50 PerfScore 5.50
-G_M61376_IG20:
+G_M61376_IG21:
cmp rdi, -1
- jl SHORT G_M61376_IG22
+ jl SHORT G_M61376_IG23
cmp rdi, -1
- jne SHORT G_M61376_IG21
+ jne SHORT G_M61376_IG22
mov rdi, 0xD1FFAB1E
cmp rsi, rdi
- jb SHORT G_M61376_IG22
+ jb SHORT G_M61376_IG23
;; size=27 bbWeight=0.50 PerfScore 2.00
-G_M61376_IG21:
+G_M61376_IG22:
lea rcx, [rsi+4*rsi]
add rcx, rcx
mov rdi, r13
mov rsi, r15
mov rdx, rbx
mov r8, -0x2710
mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x48]
call [rax]System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this
lea rdi, bword ptr [rbx+0x48]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- jmp SHORT G_M61376_IG23
+ jmp SHORT G_M61376_IG24
;; size=50 bbWeight=0.50 PerfScore 6.25
-G_M61376_IG22:
+G_M61376_IG23:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M61376_IG23:
+G_M61376_IG24:
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Threading.AsyncFlowControl:Undo():this
call [rax]System.Threading.AsyncFlowControl:Undo():this
- jmp G_M61376_IG12
+ jmp G_M61376_IG13
;; size=21 bbWeight=0.50 PerfScore 2.88
-G_M61376_IG24:
+G_M61376_IG25:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowNullReferenceException()
call [rax]System.ThrowHelper:ThrowNullReferenceException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M61376_IG25:
+G_M61376_IG26:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M61376_IG08
;; size=20 bbWeight=0 PerfScore 0.00
-G_M61376_IG26:
+G_M61376_IG27:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+CancellationPromise`1+<>c[ubyte]
call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M61376_IG13
+ jmp G_M61376_IG14
;; size=20 bbWeight=0 PerfScore 0.00
-G_M61376_IG27:
+G_M61376_IG28:
mov rax, 0xD1FFAB1E ; code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
call [rax]System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M61376_IG28:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
G_M61376_IG29:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 16
- vzeroupper
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x60]
- ;; size=26 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x40]
+ ;; size=23 bbWeight=0 PerfScore 0.00
G_M61376_IG30:
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Threading.AsyncFlowControl:Undo():this
call [rax]System.Threading.AsyncFlowControl:Undo():this
nop
;; size=17 bbWeight=0 PerfScore 0.00
G_M61376_IG31:
add rsp, 16
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1021, prolog size 46, PerfScore 105.50, instruction count 241, allocated bytes for code 1021 (MethodHash=5b10103f) for method System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 987, prolog size 43, PerfScore 103.25, instruction count 233, allocated bytes for code 987 (MethodHash=5b10103f) for method System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
-34 (-4.68 % of base) - System.Threading.Tasks.Task+DelayPromise:.ctor(uint,System.TimeProvider):this
; Assembly listing for method System.Threading.Tasks.Task+DelayPromise:.ctor(uint,System.TimeProvider):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; 25 single block inlinees; 7 inlinees without PGO data
+; 0 inlinees with PGO data; 24 single block inlinees; 8 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 11, 7 ) ref -> [rbp-0x38] this class-hnd single-def <System.Threading.Tasks.Task+DelayPromise>
+; V00 this [V00,T00] ( 11, 7 ) ref -> rbx this class-hnd single-def <System.Threading.Tasks.Task+DelayPromise>
; V01 arg1 [V01,T02] ( 5, 4 ) int -> r15 single-def
; V02 arg2 [V02,T03] ( 5, 3.50) ref -> r14 class-hnd single-def <System.TimeProvider>
; V03 loc0 [V03 ] ( 3, 1 ) struct ( 8) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.AsyncFlowControl>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T10] ( 2, 2 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <System.Threading.TimerCallback>
+; V05 tmp1 [V05,T09] ( 2, 2 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <System.Threading.TimerCallback>
;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "folding static readonly field struct" <System.TimeSpan>
;* V07 tmp3 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.TimeSpan>
-; V08 tmp4 [V08,T01] ( 7, 7 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+; V08 tmp4 [V08,T01] ( 7, 7 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Threading.Tasks.TplEventSource>
;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.TimerCallback>
-; V12 tmp8 [V12,T11] ( 2, 2 ) ref -> [rbp-0x48] class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-; V13 tmp9 [V13,T04] ( 4, 4 ) long -> rdi "impAppendStmt"
+; V12 tmp8 [V12,T10] ( 2, 2 ) ref -> r13 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V13 tmp9 [V13 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V15 tmp11 [V15 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
-;* V17 tmp13 [V17 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V19 tmp15 [V19 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V20 tmp16 [V20 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-; V22 tmp18 [V22,T05] ( 3, 3 ) long -> rdx "Inlining Arg"
-; V23 tmp19 [V23,T09] ( 4, 2 ) long -> rcx ld-addr-op "Inline ldloca(s) first use temp"
-;* V24 tmp20 [V24 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-; V25 tmp21 [V25 ] ( 2, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V26 tmp22 [V26,T13] ( 2, 2 ) long -> rdi "impAppendStmt"
-;* V27 tmp23 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V28 tmp24 [V28 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V29 tmp25 [V29 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V30 tmp26 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+; V15 tmp11 [V15,T17] ( 3, 1.50) int -> rcx "Inline return value spill temp"
+; V16 tmp12 [V16,T04] ( 4, 4 ) int -> rcx "dup spill"
+;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V18 tmp14 [V18 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
+;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V22 tmp18 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V23 tmp19 [V23 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V24 tmp20 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+; V25 tmp21 [V25,T05] ( 3, 3 ) long -> rdx "Inlining Arg"
+; V26 tmp22 [V26,T08] ( 4, 2 ) long -> rcx ld-addr-op "Inline ldloca(s) first use temp"
+;* V27 tmp23 [V27 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
+; V28 tmp24 [V28 ] ( 2, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V29 tmp25 [V29,T12] ( 2, 2 ) long -> rdi "impAppendStmt"
+;* V30 tmp26 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V31 tmp27 [V31 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V32 tmp28 [V32 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V33 tmp29 [V33 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V34 tmp30 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V35 tmp31 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V36 tmp32 [V36 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V37 tmp33 [V37 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V38 tmp34 [V38 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V39 tmp35 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V40 tmp36 [V40 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V41 tmp37 [V41,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V42 tmp38 [V42 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V43 tmp39 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V44 tmp40 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V45 tmp41 [V45,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V46 tmp42 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V47 tmp43 [V47 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-;* V48 tmp44 [V48 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V49 tmp45 [V49 ] ( 3, 1 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V03._thread (fldOffset=0x0)" P-DEP
-;* V50 tmp46 [V50,T20] ( 0, 0 ) long -> zero-ref "field V06._ticks (fldOffset=0x0)" P-INDEP
-;* V51 tmp47 [V51 ] ( 0, 0 ) long -> zero-ref "field V07._ticks (fldOffset=0x0)" P-INDEP
-;* V52 tmp48 [V52 ] ( 0, 0 ) long -> zero-ref "field V16._lower (fldOffset=0x0)" P-INDEP
-;* V53 tmp49 [V53 ] ( 0, 0 ) long -> zero-ref "field V16._upper (fldOffset=0x8)" P-INDEP
-;* V54 tmp50 [V54 ] ( 0, 0 ) long -> zero-ref "field V17._lower (fldOffset=0x0)" P-INDEP
-;* V55 tmp51 [V55 ] ( 0, 0 ) long -> zero-ref "field V17._upper (fldOffset=0x8)" P-INDEP
-;* V56 tmp52 [V56 ] ( 0, 0 ) long -> zero-ref "field V18._lower (fldOffset=0x0)" P-INDEP
-;* V57 tmp53 [V57 ] ( 0, 0 ) long -> zero-ref "field V18._upper (fldOffset=0x8)" P-INDEP
-;* V58 tmp54 [V58 ] ( 0, 0 ) long -> zero-ref "field V21._lower (fldOffset=0x0)" P-INDEP
-; V59 tmp55 [V59,T07] ( 5, 2.50) long -> rdi "field V21._upper (fldOffset=0x8)" P-INDEP
-;* V60 tmp56 [V60 ] ( 0, 0 ) long -> zero-ref "field V30._lower (fldOffset=0x0)" P-INDEP
-;* V61 tmp57 [V61 ] ( 0, 0 ) long -> zero-ref "field V30._upper (fldOffset=0x8)" P-INDEP
-;* V62 tmp58 [V62 ] ( 0, 0 ) long -> zero-ref "field V34._lower (fldOffset=0x0)" P-INDEP
-;* V63 tmp59 [V63 ] ( 0, 0 ) long -> zero-ref "field V34._upper (fldOffset=0x8)" P-INDEP
-;* V64 tmp60 [V64 ] ( 0, 0 ) long -> zero-ref "field V36._lower (fldOffset=0x0)" P-INDEP
-;* V65 tmp61 [V65 ] ( 0, 0 ) long -> zero-ref "field V36._upper (fldOffset=0x8)" P-INDEP
-;* V66 tmp62 [V66 ] ( 0, 0 ) long -> zero-ref "field V37._lower (fldOffset=0x0)" P-INDEP
-;* V67 tmp63 [V67 ] ( 0, 0 ) long -> zero-ref "field V37._upper (fldOffset=0x8)" P-INDEP
-;* V68 tmp64 [V68 ] ( 0, 0 ) long -> zero-ref "field V39._lower (fldOffset=0x0)" P-INDEP
-;* V69 tmp65 [V69 ] ( 0, 0 ) long -> zero-ref "field V39._upper (fldOffset=0x8)" P-INDEP
-;* V70 tmp66 [V70 ] ( 0, 0 ) long -> zero-ref "field V43._lower (fldOffset=0x0)" P-INDEP
-;* V71 tmp67 [V71 ] ( 0, 0 ) long -> zero-ref "field V43._upper (fldOffset=0x8)" P-INDEP
-; V72 tmp68 [V72,T16] ( 2, 1 ) long -> rcx "field V47._ticks (fldOffset=0x0)" P-INDEP
-; V73 tmp69 [V73,T12] ( 2, 2 ) ref -> r13 single-def "argument with side effect"
-; V74 tmp70 [V74,T14] ( 2, 2 ) int -> rsi "argument with side effect"
-; V75 tmp71 [V75,T06] ( 3, 3 ) long -> rdi "index expr"
-; V76 PSPSym [V76,T17] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
-; V77 cse0 [V77,T08] ( 3, 2.50) ref -> r13 "CSE #05: moderate"
-; V78 cse1 [V78,T15] ( 2, 1 ) ref -> r13 "CSE #06: moderate"
+;* V33 tmp29 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V34 tmp30 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V35 tmp31 [V35 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V36 tmp32 [V36 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V37 tmp33 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V38 tmp34 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V39 tmp35 [V39 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V40 tmp36 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V41 tmp37 [V41 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V42 tmp38 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V43 tmp39 [V43 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V44 tmp40 [V44,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V45 tmp41 [V45 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V46 tmp42 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V47 tmp43 [V47 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V48 tmp44 [V48,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V49 tmp45 [V49 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V50 tmp46 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
+;* V51 tmp47 [V51 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V52 tmp48 [V52 ] ( 3, 1 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V03._thread (fldOffset=0x0)" P-DEP
+;* V53 tmp49 [V53,T24] ( 0, 0 ) long -> zero-ref "field V06._ticks (fldOffset=0x0)" P-INDEP
+;* V54 tmp50 [V54 ] ( 0, 0 ) long -> zero-ref "field V07._ticks (fldOffset=0x0)" P-INDEP
+;* V55 tmp51 [V55 ] ( 0, 0 ) long -> zero-ref "field V19._lower (fldOffset=0x0)" P-INDEP
+;* V56 tmp52 [V56 ] ( 0, 0 ) long -> zero-ref "field V19._upper (fldOffset=0x8)" P-INDEP
+;* V57 tmp53 [V57 ] ( 0, 0 ) long -> zero-ref "field V20._lower (fldOffset=0x0)" P-INDEP
+;* V58 tmp54 [V58 ] ( 0, 0 ) long -> zero-ref "field V20._upper (fldOffset=0x8)" P-INDEP
+;* V59 tmp55 [V59 ] ( 0, 0 ) long -> zero-ref "field V21._lower (fldOffset=0x0)" P-INDEP
+;* V60 tmp56 [V60 ] ( 0, 0 ) long -> zero-ref "field V21._upper (fldOffset=0x8)" P-INDEP
+;* V61 tmp57 [V61 ] ( 0, 0 ) long -> zero-ref "field V24._lower (fldOffset=0x0)" P-INDEP
+; V62 tmp58 [V62,T06] ( 5, 2.50) long -> rdi "field V24._upper (fldOffset=0x8)" P-INDEP
+;* V63 tmp59 [V63 ] ( 0, 0 ) long -> zero-ref "field V33._lower (fldOffset=0x0)" P-INDEP
+;* V64 tmp60 [V64 ] ( 0, 0 ) long -> zero-ref "field V33._upper (fldOffset=0x8)" P-INDEP
+;* V65 tmp61 [V65 ] ( 0, 0 ) long -> zero-ref "field V37._lower (fldOffset=0x0)" P-INDEP
+;* V66 tmp62 [V66 ] ( 0, 0 ) long -> zero-ref "field V37._upper (fldOffset=0x8)" P-INDEP
+;* V67 tmp63 [V67 ] ( 0, 0 ) long -> zero-ref "field V39._lower (fldOffset=0x0)" P-INDEP
+;* V68 tmp64 [V68 ] ( 0, 0 ) long -> zero-ref "field V39._upper (fldOffset=0x8)" P-INDEP
+;* V69 tmp65 [V69 ] ( 0, 0 ) long -> zero-ref "field V40._lower (fldOffset=0x0)" P-INDEP
+;* V70 tmp66 [V70 ] ( 0, 0 ) long -> zero-ref "field V40._upper (fldOffset=0x8)" P-INDEP
+;* V71 tmp67 [V71 ] ( 0, 0 ) long -> zero-ref "field V42._lower (fldOffset=0x0)" P-INDEP
+;* V72 tmp68 [V72 ] ( 0, 0 ) long -> zero-ref "field V42._upper (fldOffset=0x8)" P-INDEP
+;* V73 tmp69 [V73 ] ( 0, 0 ) long -> zero-ref "field V46._lower (fldOffset=0x0)" P-INDEP
+;* V74 tmp70 [V74 ] ( 0, 0 ) long -> zero-ref "field V46._upper (fldOffset=0x8)" P-INDEP
+; V75 tmp71 [V75,T20] ( 2, 1 ) long -> rcx "field V50._ticks (fldOffset=0x0)" P-INDEP
+; V76 tmp72 [V76,T11] ( 2, 2 ) ref -> r13 single-def "argument with side effect"
+; V77 tmp73 [V77,T13] ( 2, 2 ) int -> rsi "argument with side effect"
+; V78 tmp74 [V78,T14] ( 2, 2 ) long -> rdi "index expr"
+; V79 PSPSym [V79,T21] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
+; V80 cse0 [V80,T07] ( 3, 2.50) ref -> r13 "CSE #05: moderate"
+; V81 cse1 [V81,T18] ( 3, 1.50) long -> rax "CSE #06: moderate"
+; V82 cse2 [V82,T19] ( 2, 1 ) ref -> r13 "CSE #07: moderate"
+; V83 rat0 [V83,T15] ( 2, 2 ) long -> rax "TLS field access"
+; V84 rat1 [V84,T16] ( 2, 2 ) long -> rax "TLS access"
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M763_IG01:
push rbp
push r15
push r14
push r13
push rbx
- sub rsp, 48
- vzeroupper
- lea rbp, [rsp+0x50]
+ sub rsp, 32
+ lea rbp, [rsp+0x40]
xor eax, eax
mov qword ptr [rbp-0x28], rax
- mov qword ptr [rbp-0x50], rsp
+ mov qword ptr [rbp-0x40], rsp
mov rbx, rdi
mov r15d, esi
mov r14, rdx
- ;; size=39 bbWeight=1 PerfScore 9.75
+ ;; size=36 bbWeight=1 PerfScore 8.75
G_M763_IG02:
mov dword ptr [rbx+0x34], 0xD1FFAB1E
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M763_IG19
+ je G_M763_IG20
;; size=26 bbWeight=1 PerfScore 5.25
G_M763_IG03:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.TplEventSource:Log
mov r13, gword ptr [rdi]
cmp byte ptr [r13+0x9D], 0
je SHORT G_M763_IG05
;; size=23 bbWeight=1 PerfScore 6.25
G_M763_IG04:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
call [rax]System.Threading.Tasks.Task:get_Id():int:this
mov esi, eax
mov rdi, r13
mov rdx, 0xD1FFAB1E ; 'Task.Delay'
xor ecx, ecx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TplEventSource:TraceOperationBegin(int,System.String,long):this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.TplEventSource:TraceOperationBegin(int,System.String,long):this
;; size=46 bbWeight=0.50 PerfScore 5.38
G_M763_IG05:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task:s_asyncDebuggingEnabled
cmp byte ptr [rdi], 0
je SHORT G_M763_IG07
;; size=15 bbWeight=1 PerfScore 4.25
G_M763_IG06:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:AddToActiveTasks(System.Threading.Tasks.Task):ubyte
call [rax]System.Threading.Tasks.Task:AddToActiveTasks(System.Threading.Tasks.Task):ubyte
;; size=15 bbWeight=0.50 PerfScore 1.75
G_M763_IG07:
cmp r15d, -1
- je G_M763_IG12
+ je G_M763_IG13
;; size=10 bbWeight=1 PerfScore 1.25
G_M763_IG08:
mov rax, 0xD1FFAB1E ; const ptr
cmp r14, gword ptr [rax]
je SHORT G_M763_IG09
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
call [rax]System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
mov gword ptr [rbp-0x28], rax
- jmp G_M763_IG14
+ jmp G_M763_IG15
;; size=36 bbWeight=0.50 PerfScore 5.25
G_M763_IG09:
mov rdi, 0xD1FFAB1E ; System.Threading.TimerQueueTimer
call CORINFO_HELP_NEWSFAST
mov r14, rax
- mov gword ptr [rbp-0x40], r14
mov rdi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rdi]
lea rdi, bword ptr [r14+0x20]
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r14+0x28]
- mov gword ptr [rbp-0x38], rbx
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [r14+0x48], -1
- mov rax, 0xD1FFAB1E ; const ptr
- mov r13, gword ptr [rax]
- mov gword ptr [rbp-0x48], r13
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov r13, gword ptr [rdi]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=95 bbWeight=0.50 PerfScore 6.75
+ call rax
+ add rax, 76
+ mov ecx, dword ptr [rax+0x10]
+ lea edx, [rcx-0x01]
+ mov dword ptr [rax+0x10], edx
+ movzx rax, cx
+ test eax, eax
+ je SHORT G_M763_IG10
+ sar ecx, 16
+ jmp SHORT G_M763_IG11
+ ;; size=120 bbWeight=0.50 PerfScore 10.75
G_M763_IG10:
- call rax ; Interop+Sys:SchedGetCpu():int
- mov edi, eax
- mov rsi, rdi
- sar rsi, 63
- and rsi, 15
- add rsi, rdi
- and rsi, -16
- sub rdi, rsi
- cmp rdi, 16
- jae G_M763_IG20
- mov r13, gword ptr [rbp-0x48]
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov ecx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M763_IG11:
+ mov edi, ecx
+ and rdi, 15
mov rsi, gword ptr [r13+8*rdi+0x10]
- mov r14, gword ptr [rbp-0x40]
lea rdi, bword ptr [r14+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, r14
mov esi, r15d
mov edx, -1
mov rax, 0xD1FFAB1E ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
call [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
- mov rbx, gword ptr [rbp-0x38]
lea rdi, bword ptr [rbx+0x38]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- je SHORT G_M763_IG11
- call CORINFO_HELP_POLL_GC
- ;; size=116 bbWeight=0.50 PerfScore 11.88
-G_M763_IG11:
+ ;; size=55 bbWeight=0.50 PerfScore 4.88
+G_M763_IG12:
test dword ptr [rbx+0x34], 0xD1FFAB1E
- je SHORT G_M763_IG12
+ je SHORT G_M763_IG13
mov rdi, gword ptr [rbx+0x38]
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
;; size=26 bbWeight=0.50 PerfScore 4.62
-G_M763_IG12:
+G_M763_IG13:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M763_IG13:
- add rsp, 48
+G_M763_IG14:
+ add rsp, 32
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 3.75
-G_M763_IG14:
+G_M763_IG15:
mov rdx, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rdx]
mov edx, r15d
mov edi, 0x3E8
lea rcx, [rbp-0x30]
mulx rdi, r8, rdi
mov qword ptr [rcx], r8
mov rcx, qword ptr [rbp-0x30]
sar rdx, 63
and rdx, 0x3E8
sub rdi, rdx
test rdi, rdi
- jg SHORT G_M763_IG17
+ jg SHORT G_M763_IG18
test rdi, rdi
- jne SHORT G_M763_IG15
+ jne SHORT G_M763_IG16
mov rdx, 0xD1FFAB1E
cmp rcx, rdx
- ja SHORT G_M763_IG17
+ ja SHORT G_M763_IG18
;; size=76 bbWeight=0.50 PerfScore 6.62
-G_M763_IG15:
+G_M763_IG16:
cmp rdi, -1
- jl SHORT G_M763_IG17
+ jl SHORT G_M763_IG18
cmp rdi, -1
- jne SHORT G_M763_IG16
+ jne SHORT G_M763_IG17
mov rdi, 0xD1FFAB1E
cmp rcx, rdi
- jb SHORT G_M763_IG17
+ jb SHORT G_M763_IG18
;; size=27 bbWeight=0.50 PerfScore 2.00
-G_M763_IG16:
+G_M763_IG17:
lea rcx, [rcx+4*rcx]
add rcx, rcx
mov rdi, r14
mov rdx, rbx
mov r8, -0x2710
mov rax, qword ptr [r14]
mov rax, qword ptr [rax+0x48]
call [rax]System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this
lea rdi, bword ptr [rbx+0x38]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- jmp SHORT G_M763_IG18
+ jmp SHORT G_M763_IG19
;; size=46 bbWeight=0.50 PerfScore 6.12
-G_M763_IG17:
+G_M763_IG18:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M763_IG18:
+G_M763_IG19:
lea rdi, [rbp-0x28]
mov rax, 0xD1FFAB1E ; code for System.Threading.AsyncFlowControl:Undo():this
call [rax]System.Threading.AsyncFlowControl:Undo():this
- jmp G_M763_IG11
+ jmp G_M763_IG12
;; size=21 bbWeight=0.50 PerfScore 2.88
-G_M763_IG19:
+G_M763_IG20:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.TplEventSource
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M763_IG03
;; size=20 bbWeight=0 PerfScore 0.00
-G_M763_IG20:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
G_M763_IG21:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 16
- vzeroupper
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x50]
- ;; size=26 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x40]
+ ;; size=23 bbWeight=0 PerfScore 0.00
G_M763_IG22:
lea rdi, [rbp-0x28]
mov rax, 0xD1FFAB1E ; code for System.Threading.AsyncFlowControl:Undo():this
call [rax]System.Threading.AsyncFlowControl:Undo():this
nop
;; size=17 bbWeight=0 PerfScore 0.00
G_M763_IG23:
add rsp, 16
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 726, prolog size 39, PerfScore 84.00, instruction count 175, allocated bytes for code 726 (MethodHash=1eeffd04) for method System.Threading.Tasks.Task+DelayPromise:.ctor(uint,System.TimeProvider):this (FullOpts)
+; Total bytes of code 692, prolog size 36, PerfScore 81.75, instruction count 167, allocated bytes for code 692 (MethodHash=1eeffd04) for method System.Threading.Tasks.Task+DelayPromise:.ctor(uint,System.TimeProvider):this (FullOpts)
-31 (-10.47 % of base) - System.Threading.Timer:.ctor(System.Threading.TimerCallback):this
; Assembly listing for method System.Threading.Timer:.ctor(System.Threading.TimerCallback):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; 9 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 4 ) ref -> [rbp-0x20] this class-hnd single-def <System.Threading.Timer>
+; V00 this [V00,T02] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Threading.Timer>
; V01 arg1 [V01,T03] ( 4, 4 ) ref -> r15 class-hnd single-def <System.Threading.TimerCallback>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 7, 14 ) ref -> [rbp-0x28] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
-; V04 tmp2 [V04,T04] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
-; V05 tmp3 [V05,T06] ( 2, 4 ) ref -> [rbp-0x30] class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-; V06 tmp4 [V06,T01] ( 4, 8 ) long -> rdi "impAppendStmt"
+; V03 tmp1 [V03,T00] ( 7, 14 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+; V04 tmp2 [V04,T04] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
+; V05 tmp3 [V05,T05] ( 2, 4 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V08 tmp6 [V08,T05] ( 3, 6 ) long -> rdi "index expr"
-; V09 cse0 [V09,T07] ( 2, 2 ) ref -> r15 "CSE #01: aggressive"
+; V08 tmp6 [V08,T10] ( 3, 2 ) int -> rcx "Inline return value spill temp"
+; V09 tmp7 [V09,T01] ( 4, 7 ) int -> rcx "dup spill"
+;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V11 tmp9 [V11,T06] ( 2, 4 ) long -> rdi "index expr"
+; V12 cse0 [V12,T09] ( 3, 3 ) long -> rax "CSE #01: aggressive"
+; V13 cse1 [V13,T11] ( 2, 2 ) ref -> r15 "CSE #02: aggressive"
+; V14 rat0 [V14,T07] ( 2, 4 ) long -> rax "TLS field access"
+; V15 rat1 [V15,T08] ( 2, 4 ) long -> rax "TLS access"
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M23568_IG01:
push rbp
push r15
push r14
push rbx
- sub rsp, 24
- vzeroupper
- lea rbp, [rsp+0x30]
+ push rax
+ lea rbp, [rsp+0x20]
mov rbx, rdi
mov r15, rsi
- ;; size=24 bbWeight=1 PerfScore 6.25
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M23568_IG02:
mov rdi, r15
mov rsi, 0xD1FFAB1E ; 'callback'
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov rdi, 0xD1FFAB1E ; System.Threading.TimerQueueTimer
call CORINFO_HELP_NEWSFAST
mov r14, rax
- mov gword ptr [rbp-0x28], r14
lea rdi, bword ptr [r14+0x20]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r14+0x28]
- mov gword ptr [rbp-0x20], rbx
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [r14+0x48], -1
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
call [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
lea rdi, bword ptr [r14+0x30]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- mov rax, 0xD1FFAB1E ; const ptr
- mov r15, gword ptr [rax]
- mov gword ptr [rbp-0x30], r15
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov r15, gword ptr [rdi]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=134 bbWeight=1 PerfScore 20.25
+ call rax
+ add rax, 76
+ mov ecx, dword ptr [rax+0x10]
+ lea edx, [rcx-0x01]
+ mov dword ptr [rax+0x10], edx
+ movzx rax, cx
+ test eax, eax
+ je SHORT G_M23568_IG04
+ ;; size=154 bbWeight=1 PerfScore 25.75
G_M23568_IG03:
- call rax ; Interop+Sys:SchedGetCpu():int
- mov edi, eax
- mov rsi, rdi
- sar rsi, 63
- and rsi, 15
- add rsi, rdi
- and rsi, -16
- sub rdi, rsi
- cmp rdi, 16
- jae SHORT G_M23568_IG06
- mov r15, gword ptr [rbp-0x30]
+ sar ecx, 16
+ jmp SHORT G_M23568_IG05
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M23568_IG04:
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov ecx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M23568_IG05:
+ mov edi, ecx
+ and rdi, 15
mov rsi, gword ptr [r15+8*rdi+0x10]
- mov r14, gword ptr [rbp-0x28]
lea rdi, bword ptr [r14+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; System.Threading.TimerHolder
call CORINFO_HELP_NEWFAST
- mov rbx, rax
- lea rdi, bword ptr [rbx+0x08]
+ mov r15, rax
+ lea rdi, bword ptr [r15+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- mov r15, gword ptr [rbp-0x20]
- lea rdi, bword ptr [r15+0x08]
- mov rsi, rbx
+ lea rdi, bword ptr [rbx+0x08]
+ mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- jne SHORT G_M23568_IG05
- ;; size=114 bbWeight=1 PerfScore 22.00
-G_M23568_IG04:
- add rsp, 24
+ nop
+ ;; size=63 bbWeight=1 PerfScore 9.25
+G_M23568_IG06:
+ add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.25
-G_M23568_IG05:
- call CORINFO_HELP_POLL_GC
- jmp SHORT G_M23568_IG04
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M23568_IG06:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 296, prolog size 18, PerfScore 51.75, instruction count 72, allocated bytes for code 296 (MethodHash=0dbda3ef) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback):this (FullOpts)
+; Total bytes of code 265, prolog size 12, PerfScore 47.25, instruction count 65, allocated bytes for code 265 (MethodHash=0dbda3ef) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback):this (FullOpts)
-30 (-2.98 % of base) - System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this
; Assembly listing for method System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):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; 28 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 18, 13.50) ref -> [rbp-0x50] this class-hnd EH-live single-def <System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]>
; V01 arg1 [V01,T01] ( 8, 6 ) ref -> r15 class-hnd single-def <System.Threading.Tasks.Task>
; V02 arg2 [V02,T03] ( 5, 4 ) int -> r14 single-def
; V03 arg3 [V03,T05] ( 5, 3.50) ref -> r13 class-hnd single-def <System.TimeProvider>
; V04 arg4 [V04 ] ( 4, 4 ) struct ( 8) [rbp-0x38] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
;* V05 loc0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Threading.TimerCallback>
; V06 loc1 [V06 ] ( 3, 1 ) struct ( 8) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.AsyncFlowControl>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; 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 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V11 tmp4 [V11,T34] ( 0, 0 ) byref -> zero-ref single-def
+;* V11 tmp4 [V11,T38] ( 0, 0 ) byref -> zero-ref single-def
; V12 tmp5 [V12,T14] ( 4, 3.50) ref -> rsi
-;* V13 tmp6 [V13,T35] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V13 tmp6 [V13,T39] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V14 tmp7 [V14,T07] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Action`2[System.Object,System.Threading.CancellationToken]>
;* V15 tmp8 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp9 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V17 tmp10 [V17,T27] ( 2, 2 ) ref -> r12 class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
-; V18 tmp11 [V18,T21] ( 5, 2.50) ref -> r12
+; V17 tmp10 [V17,T26] ( 2, 2 ) ref -> r12 class-hnd exact single-def "dup spill" <System.Threading.TimerCallback>
+; V18 tmp11 [V18,T20] ( 5, 2.50) ref -> r12
;* V19 tmp12 [V19 ] ( 0, 0 ) struct ( 8) zero-ref "folding static readonly field struct" <System.TimeSpan>
;* V20 tmp13 [V20 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.TimeSpan>
-; V21 tmp14 [V21,T02] ( 7, 7 ) ref -> [rbp-0x58] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
-;* V22 tmp15 [V22,T36] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V21 tmp14 [V21,T02] ( 7, 7 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+;* V22 tmp15 [V22,T40] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V23 tmp16 [V23,T08] ( 5, 5 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerCallback>
;* V24 tmp17 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V25 tmp18 [V25,T24] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V25 tmp18 [V25,T23] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
;* V26 tmp19 [V26 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V27 tmp20 [V27,T15] ( 3, 3 ) byref -> rdi single-def "Inlining Arg"
; V28 tmp21 [V28,T16] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.__Canon]>
-; V29 tmp22 [V29,T28] ( 2, 2 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-; V30 tmp23 [V30,T11] ( 4, 4 ) long -> rdi "impAppendStmt"
+; V29 tmp22 [V29,T27] ( 2, 2 ) ref -> r13 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V30 tmp23 [V30 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V31 tmp24 [V31 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V32 tmp25 [V32 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V33 tmp26 [V33 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
-;* V34 tmp27 [V34 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V35 tmp28 [V35 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V36 tmp29 [V36 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V37 tmp30 [V37 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V38 tmp31 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-; V39 tmp32 [V39,T18] ( 3, 3 ) long -> rdx "Inlining Arg"
-; V40 tmp33 [V40,T25] ( 4, 2 ) long -> rsi ld-addr-op "Inline ldloca(s) first use temp"
-;* V41 tmp34 [V41 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-; V42 tmp35 [V42 ] ( 2, 1 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V43 tmp36 [V43,T30] ( 2, 2 ) long -> rdi "impAppendStmt"
-;* V44 tmp37 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V45 tmp38 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V46 tmp39 [V46 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V47 tmp40 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+; V32 tmp25 [V32,T34] ( 3, 1.50) int -> rcx "Inline return value spill temp"
+; V33 tmp26 [V33,T11] ( 4, 4 ) int -> rcx "dup spill"
+;* V34 tmp27 [V34 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V35 tmp28 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V36 tmp29 [V36 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
+;* V37 tmp30 [V37 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V38 tmp31 [V38 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V39 tmp32 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V40 tmp33 [V40 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V41 tmp34 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+; V42 tmp35 [V42,T18] ( 3, 3 ) long -> rdx "Inlining Arg"
+; V43 tmp36 [V43,T24] ( 4, 2 ) long -> rsi ld-addr-op "Inline ldloca(s) first use temp"
+;* V44 tmp37 [V44 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
+; V45 tmp38 [V45 ] ( 2, 1 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V46 tmp39 [V46,T29] ( 2, 2 ) long -> rdi "impAppendStmt"
+;* V47 tmp40 [V47 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V48 tmp41 [V48 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V49 tmp42 [V49 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V50 tmp43 [V50 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V51 tmp44 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V52 tmp45 [V52 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V53 tmp46 [V53 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V54 tmp47 [V54 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
-;* V55 tmp48 [V55 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V56 tmp49 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V57 tmp50 [V57 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V58 tmp51 [V58,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V59 tmp52 [V59 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V60 tmp53 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V61 tmp54 [V61 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V62 tmp55 [V62,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V63 tmp56 [V63 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V64 tmp57 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-; V65 tmp58 [V65,T17] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.__Canon]>
-;* V66 tmp59 [V66 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
-;* V67 tmp60 [V67 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V68 tmp61 [V68 ] ( 4, 4 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
-; V69 tmp62 [V69 ] ( 3, 1 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
-;* V70 tmp63 [V70,T40] ( 0, 0 ) long -> zero-ref "field V19._ticks (fldOffset=0x0)" P-INDEP
-;* V71 tmp64 [V71 ] ( 0, 0 ) long -> zero-ref "field V20._ticks (fldOffset=0x0)" P-INDEP
-;* V72 tmp65 [V72 ] ( 0, 0 ) long -> zero-ref "field V33._lower (fldOffset=0x0)" P-INDEP
-;* V73 tmp66 [V73 ] ( 0, 0 ) long -> zero-ref "field V33._upper (fldOffset=0x8)" P-INDEP
-;* V74 tmp67 [V74 ] ( 0, 0 ) long -> zero-ref "field V34._lower (fldOffset=0x0)" P-INDEP
-;* V75 tmp68 [V75 ] ( 0, 0 ) long -> zero-ref "field V34._upper (fldOffset=0x8)" P-INDEP
-;* V76 tmp69 [V76 ] ( 0, 0 ) long -> zero-ref "field V35._lower (fldOffset=0x0)" P-INDEP
-;* V77 tmp70 [V77 ] ( 0, 0 ) long -> zero-ref "field V35._upper (fldOffset=0x8)" P-INDEP
-;* V78 tmp71 [V78 ] ( 0, 0 ) long -> zero-ref "field V38._lower (fldOffset=0x0)" P-INDEP
-; V79 tmp72 [V79,T22] ( 5, 2.50) long -> rdi "field V38._upper (fldOffset=0x8)" P-INDEP
-;* V80 tmp73 [V80 ] ( 0, 0 ) long -> zero-ref "field V47._lower (fldOffset=0x0)" P-INDEP
-;* V81 tmp74 [V81 ] ( 0, 0 ) long -> zero-ref "field V47._upper (fldOffset=0x8)" P-INDEP
-;* V82 tmp75 [V82 ] ( 0, 0 ) long -> zero-ref "field V51._lower (fldOffset=0x0)" P-INDEP
-;* V83 tmp76 [V83 ] ( 0, 0 ) long -> zero-ref "field V51._upper (fldOffset=0x8)" P-INDEP
-;* V84 tmp77 [V84 ] ( 0, 0 ) long -> zero-ref "field V53._lower (fldOffset=0x0)" P-INDEP
-;* V85 tmp78 [V85 ] ( 0, 0 ) long -> zero-ref "field V53._upper (fldOffset=0x8)" P-INDEP
-;* V86 tmp79 [V86 ] ( 0, 0 ) long -> zero-ref "field V54._lower (fldOffset=0x0)" P-INDEP
-;* V87 tmp80 [V87 ] ( 0, 0 ) long -> zero-ref "field V54._upper (fldOffset=0x8)" P-INDEP
-;* V88 tmp81 [V88 ] ( 0, 0 ) long -> zero-ref "field V56._lower (fldOffset=0x0)" P-INDEP
-;* V89 tmp82 [V89 ] ( 0, 0 ) long -> zero-ref "field V56._upper (fldOffset=0x8)" P-INDEP
-;* V90 tmp83 [V90 ] ( 0, 0 ) long -> zero-ref "field V60._lower (fldOffset=0x0)" P-INDEP
-;* V91 tmp84 [V91 ] ( 0, 0 ) long -> zero-ref "field V60._upper (fldOffset=0x8)" P-INDEP
-; V92 tmp85 [V92,T33] ( 2, 1 ) long -> rcx "field V64._ticks (fldOffset=0x0)" P-INDEP
-; V93 tmp86 [V93,T29] ( 2, 2 ) ref -> rax "field V66._node (fldOffset=0x0)" P-INDEP
-; V94 tmp87 [V94,T31] ( 2, 2 ) long -> r12 "field V66._id (fldOffset=0x8)" P-INDEP
-; V95 tmp88 [V95,T19] ( 3, 3 ) long -> rdi "index expr"
-; V96 PSPSym [V96,T37] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
-; V97 cse0 [V97,T06] ( 8, 5 ) byref -> r15 multi-def "CSE #03: moderate"
-; V98 cse1 [V98,T10] ( 4, 3 ) long -> rdi multi-def "CSE #02: moderate"
-; V99 cse2 [V99,T32] ( 2, 1 ) ref -> r13 "CSE #04: conservative"
-; V100 rat0 [V100,T23] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
-; V101 rat1 [V101,T26] ( 3, 2 ) long -> rdi "runtime lookup"
-; V102 rat2 [V102,T20] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
-; V103 rat3 [V103,T09] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
-; V104 rat4 [V104,T12] ( 3, 4 ) long -> rdi "runtime lookup"
-; V105 rat5 [V105,T04] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+;* V50 tmp43 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V51 tmp44 [V51 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V52 tmp45 [V52 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V53 tmp46 [V53 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V54 tmp47 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V55 tmp48 [V55 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V56 tmp49 [V56 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V57 tmp50 [V57 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
+;* V58 tmp51 [V58 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V59 tmp52 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V60 tmp53 [V60 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V61 tmp54 [V61,T42] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V62 tmp55 [V62 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V63 tmp56 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
+;* V64 tmp57 [V64 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V65 tmp58 [V65,T43] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V66 tmp59 [V66 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V67 tmp60 [V67 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
+; V68 tmp61 [V68,T17] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.__Canon]>
+;* V69 tmp62 [V69 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
+;* V70 tmp63 [V70 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V71 tmp64 [V71 ] ( 4, 4 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed single-def "field V04._source (fldOffset=0x0)" P-DEP
+; V72 tmp65 [V72 ] ( 3, 1 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V06._thread (fldOffset=0x0)" P-DEP
+;* V73 tmp66 [V73,T44] ( 0, 0 ) long -> zero-ref "field V19._ticks (fldOffset=0x0)" P-INDEP
+;* V74 tmp67 [V74 ] ( 0, 0 ) long -> zero-ref "field V20._ticks (fldOffset=0x0)" P-INDEP
+;* V75 tmp68 [V75 ] ( 0, 0 ) long -> zero-ref "field V36._lower (fldOffset=0x0)" P-INDEP
+;* V76 tmp69 [V76 ] ( 0, 0 ) long -> zero-ref "field V36._upper (fldOffset=0x8)" P-INDEP
+;* V77 tmp70 [V77 ] ( 0, 0 ) long -> zero-ref "field V37._lower (fldOffset=0x0)" P-INDEP
+;* V78 tmp71 [V78 ] ( 0, 0 ) long -> zero-ref "field V37._upper (fldOffset=0x8)" P-INDEP
+;* V79 tmp72 [V79 ] ( 0, 0 ) long -> zero-ref "field V38._lower (fldOffset=0x0)" P-INDEP
+;* V80 tmp73 [V80 ] ( 0, 0 ) long -> zero-ref "field V38._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp74 [V81 ] ( 0, 0 ) long -> zero-ref "field V41._lower (fldOffset=0x0)" P-INDEP
+; V82 tmp75 [V82,T21] ( 5, 2.50) long -> rdi "field V41._upper (fldOffset=0x8)" P-INDEP
+;* V83 tmp76 [V83 ] ( 0, 0 ) long -> zero-ref "field V50._lower (fldOffset=0x0)" P-INDEP
+;* V84 tmp77 [V84 ] ( 0, 0 ) long -> zero-ref "field V50._upper (fldOffset=0x8)" P-INDEP
+;* V85 tmp78 [V85 ] ( 0, 0 ) long -> zero-ref "field V54._lower (fldOffset=0x0)" P-INDEP
+;* V86 tmp79 [V86 ] ( 0, 0 ) long -> zero-ref "field V54._upper (fldOffset=0x8)" P-INDEP
+;* V87 tmp80 [V87 ] ( 0, 0 ) long -> zero-ref "field V56._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp81 [V88 ] ( 0, 0 ) long -> zero-ref "field V56._upper (fldOffset=0x8)" P-INDEP
+;* V89 tmp82 [V89 ] ( 0, 0 ) long -> zero-ref "field V57._lower (fldOffset=0x0)" P-INDEP
+;* V90 tmp83 [V90 ] ( 0, 0 ) long -> zero-ref "field V57._upper (fldOffset=0x8)" P-INDEP
+;* V91 tmp84 [V91 ] ( 0, 0 ) long -> zero-ref "field V59._lower (fldOffset=0x0)" P-INDEP
+;* V92 tmp85 [V92 ] ( 0, 0 ) long -> zero-ref "field V59._upper (fldOffset=0x8)" P-INDEP
+;* V93 tmp86 [V93 ] ( 0, 0 ) long -> zero-ref "field V63._lower (fldOffset=0x0)" P-INDEP
+;* V94 tmp87 [V94 ] ( 0, 0 ) long -> zero-ref "field V63._upper (fldOffset=0x8)" P-INDEP
+; V95 tmp88 [V95,T37] ( 2, 1 ) long -> rcx "field V67._ticks (fldOffset=0x0)" P-INDEP
+; V96 tmp89 [V96,T28] ( 2, 2 ) ref -> rax "field V69._node (fldOffset=0x0)" P-INDEP
+; V97 tmp90 [V97,T30] ( 2, 2 ) long -> r12 "field V69._id (fldOffset=0x8)" P-INDEP
+; V98 tmp91 [V98,T31] ( 2, 2 ) long -> rdi "index expr"
+; V99 PSPSym [V99,T41] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
+; V100 cse0 [V100,T06] ( 8, 5 ) byref -> r15 multi-def "CSE #03: moderate"
+; V101 cse1 [V101,T10] ( 4, 3 ) long -> rdi multi-def "CSE #02: moderate"
+; V102 cse2 [V102,T35] ( 3, 1.50) long -> rax "CSE #04: conservative"
+; V103 cse3 [V103,T36] ( 2, 1 ) ref -> r13 "CSE #05: conservative"
+; V104 rat0 [V104,T22] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V105 rat1 [V105,T25] ( 3, 2 ) long -> rdi "runtime lookup"
+; V106 rat2 [V106,T19] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V107 rat3 [V107,T09] ( 3, 4.40) long -> rdi "Spilling to split statement for tree"
+; V108 rat4 [V108,T12] ( 3, 4 ) long -> rdi "runtime lookup"
+; V109 rat5 [V109,T04] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V110 rat6 [V110,T32] ( 2, 2 ) long -> rax "TLS field access"
+; V111 rat7 [V111,T33] ( 2, 2 ) long -> rax "TLS access"
;
-; Lcl frame size = 72
+; Lcl frame size = 56
G_M34265_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 72
- vzeroupper
- lea rbp, [rsp+0x70]
+ sub rsp, 56
+ lea rbp, [rsp+0x60]
xor eax, eax
mov qword ptr [rbp-0x40], rax
- mov qword ptr [rbp-0x70], rsp
+ mov qword ptr [rbp-0x60], rsp
mov qword ptr [rbp-0x30], rdi
mov gword ptr [rbp-0x50], rdi
mov gword ptr [rbp-0x38], r8
mov rbx, rdi
mov r15, rsi
mov r14d, edx
mov r13, rcx
- ;; size=56 bbWeight=1 PerfScore 14.00
+ ;; size=53 bbWeight=1 PerfScore 13.00
G_M34265_IG02:
mov dword ptr [rbx+0x34], 0xD1FFAB1E
lea rdi, bword ptr [rbx+0x40]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
test dword ptr [r15+0x34], 0xD1FFAB1E
jne SHORT G_M34265_IG05
;; size=29 bbWeight=1 PerfScore 6.75
G_M34265_IG03:
cmp gword ptr [r15+0x20], 0
jne SHORT G_M34265_IG04
lea rdi, bword ptr [r15+0x20]
test rdi, rdi
- je G_M34265_IG28
+ je G_M34265_IG29
mov rsi, rbx
xor rdx, rdx
call System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
test rax, rax
je SHORT G_M34265_IG06
;; size=35 bbWeight=0.50 PerfScore 4.25
G_M34265_IG04:
mov rdi, r15
mov rsi, rbx
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
call [rax]System.Threading.Tasks.Task:AddTaskContinuationComplex(System.Object,ubyte):ubyte:this
test eax, eax
jne SHORT G_M34265_IG06
;; size=24 bbWeight=0.50 PerfScore 2.62
G_M34265_IG05:
mov rdi, rbx
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
call [rax]System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this
;; size=18 bbWeight=0.50 PerfScore 1.88
G_M34265_IG06:
cmp r14d, -1
- je G_M34265_IG14
+ je G_M34265_IG15
;; size=10 bbWeight=1 PerfScore 1.25
G_M34265_IG07:
mov rdi, qword ptr [rbx]
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi+0x08]
mov rax, qword ptr [rsi+0x18]
test rax, rax
je SHORT G_M34265_IG09
;; size=20 bbWeight=0.50 PerfScore 4.62
G_M34265_IG08:
mov rdi, rax
jmp SHORT G_M34265_IG10
;; size=5 bbWeight=0.40 PerfScore 0.90
G_M34265_IG09:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rdi, rax
;; size=18 bbWeight=0.10 PerfScore 0.15
G_M34265_IG10:
call CORINFO_HELP_GET_GCSTATIC_BASE
mov r15, rax
mov r12, gword ptr [r15+0x08]
test r12, r12
jne SHORT G_M34265_IG11
mov rdi, 0xD1FFAB1E ; System.Threading.TimerCallback
call CORINFO_HELP_NEWSFAST
mov r12, rax
mov rsi, gword ptr [r15]
test rsi, rsi
- je G_M34265_IG29
+ je G_M34265_IG30
lea rdi, bword ptr [r12+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.__Canon]:<.ctor>b__3_1(System.Object):this
mov qword ptr [r12+0x18], rdi
lea rdi, bword ptr [r15+0x08]
mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
;; size=84 bbWeight=0.50 PerfScore 6.88
G_M34265_IG11:
mov rax, 0xD1FFAB1E ; const ptr
cmp r13, gword ptr [rax]
je SHORT G_M34265_IG12
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
call [rax]System.Threading.ExecutionContext:SuppressFlow():System.Threading.AsyncFlowControl
mov gword ptr [rbp-0x40], rax
- jmp G_M34265_IG23
+ jmp G_M34265_IG24
;; size=36 bbWeight=0.50 PerfScore 5.25
G_M34265_IG12:
mov rdi, 0xD1FFAB1E ; System.Threading.TimerQueueTimer
call CORINFO_HELP_NEWSFAST
mov r15, rax
- mov gword ptr [rbp-0x58], r15
lea rdi, bword ptr [r15+0x20]
mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r15+0x28]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [r15+0x48], -1
- mov rax, 0xD1FFAB1E ; const ptr
- mov r13, gword ptr [rax]
- mov gword ptr [rbp-0x60], r13
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov r13, gword ptr [rdi]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=81 bbWeight=0.50 PerfScore 5.25
+ call rax
+ add rax, 76
+ mov ecx, dword ptr [rax+0x10]
+ lea edx, [rcx-0x01]
+ mov dword ptr [rax+0x10], edx
+ movzx rax, cx
+ test eax, eax
+ je SHORT G_M34265_IG13
+ sar ecx, 16
+ jmp SHORT G_M34265_IG14
+ ;; size=110 bbWeight=0.50 PerfScore 9.75
G_M34265_IG13:
- call rax ; Interop+Sys:SchedGetCpu():int
- mov edi, eax
- mov rsi, rdi
- sar rsi, 63
- and rsi, 15
- add rsi, rdi
- and rsi, -16
- sub rdi, rsi
- cmp rdi, 16
- jae G_M34265_IG30
- mov r13, gword ptr [rbp-0x60]
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov ecx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M34265_IG14:
+ mov edi, ecx
+ and rdi, 15
mov rsi, gword ptr [r13+8*rdi+0x10]
- mov r15, gword ptr [rbp-0x58]
lea rdi, bword ptr [r15+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, r15
mov esi, r14d
mov edx, -1
mov rax, 0xD1FFAB1E ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
call [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
- mov rbx, gword ptr [rbp-0x50]
lea rdi, bword ptr [rbx+0x48]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- je SHORT G_M34265_IG14
- call CORINFO_HELP_POLL_GC
- ;; size=116 bbWeight=0.50 PerfScore 11.88
-G_M34265_IG14:
+ ;; size=55 bbWeight=0.50 PerfScore 4.88
+G_M34265_IG15:
mov rdi, qword ptr [rbx]
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi+0x08]
mov rax, qword ptr [rsi+0x18]
test rax, rax
- je SHORT G_M34265_IG16
+ je SHORT G_M34265_IG17
;; size=20 bbWeight=1 PerfScore 9.25
-G_M34265_IG15:
+G_M34265_IG16:
mov rdi, rax
- jmp SHORT G_M34265_IG17
+ jmp SHORT G_M34265_IG18
;; size=5 bbWeight=0.80 PerfScore 1.80
-G_M34265_IG16:
+G_M34265_IG17:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rdi, rax
;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M34265_IG17:
+G_M34265_IG18:
call CORINFO_HELP_GET_GCSTATIC_BASE
mov r15, rax
mov rsi, gword ptr [r15+0x10]
test rsi, rsi
- jne SHORT G_M34265_IG19
+ jne SHORT G_M34265_IG20
;; size=17 bbWeight=1 PerfScore 4.50
-G_M34265_IG18:
+G_M34265_IG19:
mov rdi, 0xD1FFAB1E ; System.Action`2[System.Object,System.Threading.CancellationToken]
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rsi, gword ptr [r15]
test rsi, rsi
- je G_M34265_IG29
+ je G_M34265_IG30
lea rdi, bword ptr [r14+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1+<>c[System.__Canon]:<.ctor>b__3_0(System.Object,System.Threading.CancellationToken):this
mov qword ptr [r14+0x18], rdi
lea rdi, bword ptr [r15+0x10]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rsi, r14
;; size=68 bbWeight=0.50 PerfScore 4.75
-G_M34265_IG19:
+G_M34265_IG20:
lea rdi, bword ptr [rbp-0x38]
mov rdx, rbx
xor ecx, ecx
xor r8d, r8d
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
call [rax]System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this
mov r12, rdx
lea rdi, bword ptr [rbx+0x50]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [rbx+0x58], r12
test dword ptr [rbx+0x34], 0xD1FFAB1E
- je SHORT G_M34265_IG21
+ je SHORT G_M34265_IG22
;; size=52 bbWeight=1 PerfScore 11.50
-G_M34265_IG20:
+G_M34265_IG21:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]:Cleanup():this
call [rax]System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]:Cleanup():this
;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M34265_IG21:
+G_M34265_IG22:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M34265_IG22:
- add rsp, 72
+G_M34265_IG23:
+ add rsp, 56
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M34265_IG23:
+G_M34265_IG24:
mov edx, r14d
mov edi, 0x3E8
lea rsi, [rbp-0x48]
mulx rdi, rcx, rdi
mov qword ptr [rsi], rcx
mov rsi, qword ptr [rbp-0x48]
sar rdx, 63
and rdx, 0x3E8
sub rdi, rdx
test rdi, rdi
- jg SHORT G_M34265_IG26
+ jg SHORT G_M34265_IG27
test rdi, rdi
- jne SHORT G_M34265_IG24
+ jne SHORT G_M34265_IG25
mov rdx, 0xD1FFAB1E
cmp rsi, rdx
- ja SHORT G_M34265_IG26
+ ja SHORT G_M34265_IG27
;; size=63 bbWeight=0.50 PerfScore 5.50
-G_M34265_IG24:
+G_M34265_IG25:
cmp rdi, -1
- jl SHORT G_M34265_IG26
+ jl SHORT G_M34265_IG27
cmp rdi, -1
- jne SHORT G_M34265_IG25
+ jne SHORT G_M34265_IG26
mov rdi, 0xD1FFAB1E
cmp rsi, rdi
- jb SHORT G_M34265_IG26
+ jb SHORT G_M34265_IG27
;; size=27 bbWeight=0.50 PerfScore 2.00
-G_M34265_IG25:
+G_M34265_IG26:
lea rcx, [rsi+4*rsi]
add rcx, rcx
mov rdi, r13
mov rsi, r12
mov rdx, rbx
mov r8, -0x2710
mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x48]
call [rax]System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this
lea rdi, bword ptr [rbx+0x48]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- jmp SHORT G_M34265_IG27
+ jmp SHORT G_M34265_IG28
;; size=50 bbWeight=0.50 PerfScore 6.25
-G_M34265_IG26:
+G_M34265_IG27:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M34265_IG27:
+G_M34265_IG28:
lea rdi, [rbp-0x40]
mov rax, 0xD1FFAB1E ; code for System.Threading.AsyncFlowControl:Undo():this
call [rax]System.Threading.AsyncFlowControl:Undo():this
- jmp G_M34265_IG14
+ jmp G_M34265_IG15
;; size=21 bbWeight=0.50 PerfScore 2.88
-G_M34265_IG28:
+G_M34265_IG29:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowNullReferenceException()
call [rax]System.ThrowHelper:ThrowNullReferenceException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M34265_IG29:
+G_M34265_IG30:
mov rax, 0xD1FFAB1E ; code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
call [rax]System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M34265_IG30:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
G_M34265_IG31:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
- vzeroupper
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x70]
- ;; size=25 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x60]
+ ;; size=22 bbWeight=0 PerfScore 0.00
G_M34265_IG32:
lea rdi, [rbp-0x40]
mov rax, 0xD1FFAB1E ; code for System.Threading.AsyncFlowControl:Undo():this
call [rax]System.Threading.AsyncFlowControl:Undo():this
nop
;; size=17 bbWeight=0 PerfScore 0.00
G_M34265_IG33:
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 1006, prolog size 56, PerfScore 120.65, instruction count 256, allocated bytes for code 1006 (MethodHash=c59c7a26) for method System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
+; Total bytes of code 976, prolog size 53, PerfScore 118.90, instruction count 249, allocated bytes for code 976 (MethodHash=c59c7a26) for method System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
-29 (-6.50 % of base) - System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,int,int):this
; Assembly listing for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,int,int):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; 10 single block inlinees; 6 inlinees without PGO data
+; 0 inlinees with PGO data; 9 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 3, 3 ) ref -> [rbp-0x30] this class-hnd single-def <System.Threading.Timer>
+; V00 this [V00,T06] ( 3, 3 ) ref -> r13 this class-hnd single-def <System.Threading.Timer>
; V01 arg1 [V01,T04] ( 4, 4 ) ref -> r14 class-hnd single-def <System.Threading.TimerCallback>
-; V02 arg2 [V02,T08] ( 3, 3 ) ref -> r12 class-hnd single-def <System.Object>
-; V03 arg3 [V03,T02] ( 6, 4.50) int -> rbx single-def
+; V02 arg2 [V02,T07] ( 3, 3 ) ref -> r12 class-hnd single-def <System.Object>
+; V03 arg3 [V03,T01] ( 6, 4.50) int -> rbx single-def
; V04 arg4 [V04,T03] ( 5, 3.50) int -> r15 single-def
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V07 tmp2 [V07,T11] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V07 tmp2 [V07,T15] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V09 tmp4 [V09,T12] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp5 [V10,T00] ( 8, 15 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
-; V11 tmp6 [V11,T05] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
-; V12 tmp7 [V12,T09] ( 2, 4 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-; V13 tmp8 [V13,T01] ( 4, 8 ) long -> rdi "impAppendStmt"
+;* V09 tmp4 [V09,T16] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V10 tmp5 [V10,T00] ( 8, 15 ) ref -> [rbp-0x30] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+; V11 tmp6 [V11,T05] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
+; V12 tmp7 [V12,T08] ( 2, 4 ) ref -> r12 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V13 tmp8 [V13 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V15 tmp10 [V15,T13] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V16 tmp11 [V16,T14] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V17 tmp12 [V17,T06] ( 3, 6 ) long -> rdi "index expr"
-; V18 cse0 [V18,T10] ( 2, 2 ) ref -> r12 "CSE #01: moderate"
+; V15 tmp10 [V15,T13] ( 3, 2 ) int -> rcx "Inline return value spill temp"
+; V16 tmp11 [V16,T02] ( 4, 7 ) int -> rcx "dup spill"
+;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V18 tmp13 [V18,T17] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V19 tmp14 [V19,T18] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V20 tmp15 [V20,T09] ( 2, 4 ) long -> rdi "index expr"
+; V21 cse0 [V21,T12] ( 3, 3 ) long -> rax "CSE #01: moderate"
+; V22 cse1 [V22,T14] ( 2, 2 ) ref -> r12 "CSE #02: moderate"
+; V23 rat0 [V23,T10] ( 2, 4 ) long -> rax "TLS field access"
+; V24 rat1 [V24,T11] ( 2, 4 ) long -> rax "TLS access"
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M31938_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- vzeroupper
- lea rbp, [rsp+0x40]
- mov gword ptr [rbp-0x30], rdi
+ push rax
+ lea rbp, [rsp+0x30]
+ mov r13, rdi
mov r14, rsi
mov r12, rdx
mov ebx, ecx
mov r15d, r8d
- ;; size=37 bbWeight=1 PerfScore 9.75
+ ;; size=30 bbWeight=1 PerfScore 8.75
G_M31938_IG02:
cmp ebx, -1
jl G_M31938_IG10
cmp r15d, -1
jl G_M31938_IG09
mov rdi, r14
mov rsi, 0xD1FFAB1E ; 'callback'
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov rdi, 0xD1FFAB1E ; System.Threading.TimerQueueTimer
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x38], rax
+ mov gword ptr [rbp-0x30], rax
lea rdi, bword ptr [rax+0x20]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- mov r14, gword ptr [rbp-0x38]
+ mov r14, gword ptr [rbp-0x30]
lea rdi, bword ptr [r14+0x28]
mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [r14+0x48], -1
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
call [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
lea rdi, bword ptr [r14+0x30]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- mov rax, 0xD1FFAB1E ; const ptr
- mov r12, gword ptr [rax]
- mov gword ptr [rbp-0x40], r12
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov r12, gword ptr [rdi]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=150 bbWeight=1 PerfScore 22.50
+ call rax
+ add rax, 76
+ mov ecx, dword ptr [rax+0x10]
+ lea edx, [rcx-0x01]
+ mov dword ptr [rax+0x10], edx
+ movzx rax, cx
+ test eax, eax
+ je SHORT G_M31938_IG04
+ ;; size=178 bbWeight=1 PerfScore 30.00
G_M31938_IG03:
- call rax ; Interop+Sys:SchedGetCpu():int
- mov edi, eax
- mov rsi, rdi
- sar rsi, 63
- and rsi, 15
- add rsi, rdi
- and rsi, -16
- sub rdi, rsi
- cmp rdi, 16
- jae G_M31938_IG11
- mov r12, gword ptr [rbp-0x40]
+ sar ecx, 16
+ jmp SHORT G_M31938_IG05
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M31938_IG04:
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov ecx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M31938_IG05:
+ mov edi, ecx
+ and rdi, 15
mov rsi, gword ptr [r12+8*rdi+0x10]
- mov r14, gword ptr [rbp-0x38]
lea rdi, bword ptr [r14+0x08]
call CORINFO_HELP_ASSIGN_REF
- mov rdi, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rdi], 0
- jne SHORT G_M31938_IG08
- ;; size=72 bbWeight=1 PerfScore 16.00
-G_M31938_IG04:
cmp ebx, -1
- je SHORT G_M31938_IG06
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M31938_IG05:
+ je SHORT G_M31938_IG07
+ ;; size=25 bbWeight=1 PerfScore 5.25
+G_M31938_IG06:
mov rdi, r14
mov esi, ebx
mov edx, r15d
mov rax, 0xD1FFAB1E ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
call [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
;; size=20 bbWeight=0.50 PerfScore 2.00
-G_M31938_IG06:
+G_M31938_IG07:
mov rdi, 0xD1FFAB1E ; System.Threading.TimerHolder
call CORINFO_HELP_NEWFAST
- mov rbx, rax
- lea rdi, bword ptr [rbx+0x08]
+ mov r15, rax
+ lea rdi, bword ptr [r15+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- mov r13, gword ptr [rbp-0x30]
lea rdi, bword ptr [r13+0x08]
- mov rsi, rbx
+ mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
nop
- ;; size=47 bbWeight=1 PerfScore 6.25
-G_M31938_IG07:
- add rsp, 24
+ ;; size=43 bbWeight=1 PerfScore 5.25
+G_M31938_IG08:
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M31938_IG08:
- call CORINFO_HELP_POLL_GC
- jmp SHORT G_M31938_IG04
- ;; size=7 bbWeight=0 PerfScore 0.00
G_M31938_IG09:
mov edi, 0x1720A
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov edi, r15d
mov esi, -1
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
int3
;; size=44 bbWeight=0 PerfScore 0.00
G_M31938_IG10:
mov edi, 0x1723A
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov edi, ebx
mov esi, -1
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
int3
;; size=43 bbWeight=0 PerfScore 0.00
-G_M31938_IG11:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 446, prolog size 22, PerfScore 62.00, instruction count 108, allocated bytes for code 446 (MethodHash=f2d5833d) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,int,int):this (FullOpts)
+; Total bytes of code 417, prolog size 16, PerfScore 58.50, instruction count 102, allocated bytes for code 417 (MethodHash=f2d5833d) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,int,int):this (FullOpts)
-29 (-8.45 % of base) - System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint):this
; Assembly listing for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint):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; 9 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 3, 3 ) ref -> [rbp-0x30] this class-hnd single-def <System.Threading.Timer>
+; V00 this [V00,T05] ( 3, 3 ) ref -> r14 this class-hnd single-def <System.Threading.Timer>
; V01 arg1 [V01,T02] ( 4, 4 ) ref -> rbx class-hnd single-def <System.Threading.TimerCallback>
-; V02 arg2 [V02,T07] ( 3, 3 ) ref -> r13 class-hnd single-def <System.Object>
-; V03 arg3 [V03,T05] ( 4, 3.50) int -> r15 single-def
-; V04 arg4 [V04,T08] ( 3, 2.50) int -> r12 single-def
+; V02 arg2 [V02,T06] ( 3, 3 ) ref -> r13 class-hnd single-def <System.Object>
+; V03 arg3 [V03,T04] ( 4, 3.50) int -> r15 single-def
+; V04 arg4 [V04,T07] ( 3, 2.50) int -> r12 single-def
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T00] ( 8, 15 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+; V06 tmp1 [V06,T00] ( 8, 15 ) ref -> [rbp-0x30] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
; V07 tmp2 [V07,T03] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
-; V08 tmp3 [V08,T09] ( 2, 4 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-; V09 tmp4 [V09,T01] ( 4, 8 ) long -> rdi "impAppendStmt"
+; V08 tmp3 [V08,T08] ( 2, 4 ) ref -> r13 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V11 tmp6 [V11,T04] ( 3, 6 ) long -> rdi "index expr"
-; V12 cse0 [V12,T10] ( 2, 2 ) ref -> r13 "CSE #01: moderate"
+; V11 tmp6 [V11,T13] ( 3, 2 ) int -> rcx "Inline return value spill temp"
+; V12 tmp7 [V12,T01] ( 4, 7 ) int -> rcx "dup spill"
+;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V14 tmp9 [V14,T09] ( 2, 4 ) long -> rdi "index expr"
+; V15 cse0 [V15,T12] ( 3, 3 ) long -> rax "CSE #01: moderate"
+; V16 cse1 [V16,T14] ( 2, 2 ) ref -> r13 "CSE #02: moderate"
+; V17 rat0 [V17,T10] ( 2, 4 ) long -> rax "TLS field access"
+; V18 rat1 [V18,T11] ( 2, 4 ) long -> rax "TLS access"
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M13954_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- vzeroupper
- lea rbp, [rsp+0x40]
- mov gword ptr [rbp-0x30], rdi
+ push rax
+ lea rbp, [rsp+0x30]
+ mov r14, rdi
mov rbx, rsi
mov r13, rdx
mov r15d, ecx
mov r12d, r8d
- ;; size=38 bbWeight=1 PerfScore 9.75
+ ;; size=31 bbWeight=1 PerfScore 8.75
G_M13954_IG02:
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; 'callback'
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov rdi, 0xD1FFAB1E ; System.Threading.TimerQueueTimer
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x38], rax
+ mov gword ptr [rbp-0x30], rax
lea rdi, bword ptr [rax+0x20]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
- mov rbx, gword ptr [rbp-0x38]
+ mov rbx, gword ptr [rbp-0x30]
lea rdi, bword ptr [rbx+0x28]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
mov qword ptr [rbx+0x48], -1
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
call [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
lea rdi, bword ptr [rbx+0x30]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- mov rax, 0xD1FFAB1E ; const ptr
- mov r13, gword ptr [rax]
- mov gword ptr [rbp-0x40], r13
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov r13, gword ptr [rdi]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=131 bbWeight=1 PerfScore 20.00
+ call rax
+ add rax, 76
+ mov ecx, dword ptr [rax+0x10]
+ lea edx, [rcx-0x01]
+ mov dword ptr [rax+0x10], edx
+ movzx rax, cx
+ test eax, eax
+ je SHORT G_M13954_IG04
+ ;; size=159 bbWeight=1 PerfScore 27.50
G_M13954_IG03:
- call rax ; Interop+Sys:SchedGetCpu():int
- mov edi, eax
- mov rsi, rdi
- sar rsi, 63
- and rsi, 15
- add rsi, rdi
- and rsi, -16
- sub rdi, rsi
- cmp rdi, 16
- jae G_M13954_IG09
- mov r13, gword ptr [rbp-0x40]
+ sar ecx, 16
+ jmp SHORT G_M13954_IG05
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M13954_IG04:
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov ecx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M13954_IG05:
+ mov edi, ecx
+ and rdi, 15
mov rsi, gword ptr [r13+8*rdi+0x10]
- mov rbx, gword ptr [rbp-0x38]
lea rdi, bword ptr [rbx+0x08]
call CORINFO_HELP_ASSIGN_REF
- mov rdi, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rdi], 0
- jne SHORT G_M13954_IG08
- ;; size=72 bbWeight=1 PerfScore 16.00
-G_M13954_IG04:
cmp r15d, -1
- je SHORT G_M13954_IG06
- ;; size=6 bbWeight=1 PerfScore 1.25
-G_M13954_IG05:
+ je SHORT G_M13954_IG07
+ ;; size=26 bbWeight=1 PerfScore 5.25
+G_M13954_IG06:
mov rdi, rbx
mov esi, r15d
mov edx, r12d
mov rax, 0xD1FFAB1E ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
call [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
;; size=21 bbWeight=0.50 PerfScore 2.00
-G_M13954_IG06:
+G_M13954_IG07:
mov rdi, 0xD1FFAB1E ; System.Threading.TimerHolder
call CORINFO_HELP_NEWFAST
mov r15, rax
lea rdi, bword ptr [r15+0x08]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
- mov r14, gword ptr [rbp-0x30]
lea rdi, bword ptr [r14+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
nop
- ;; size=47 bbWeight=1 PerfScore 6.25
-G_M13954_IG07:
- add rsp, 24
+ ;; size=43 bbWeight=1 PerfScore 5.25
+G_M13954_IG08:
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M13954_IG08:
- call CORINFO_HELP_POLL_GC
- jmp SHORT G_M13954_IG04
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M13954_IG09:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 343, prolog size 22, PerfScore 59.50, instruction count 86, allocated bytes for code 343 (MethodHash=3f9bc97d) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint):this (FullOpts)
+; Total bytes of code 314, prolog size 16, PerfScore 56.00, instruction count 80, allocated bytes for code 314 (MethodHash=3f9bc97d) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint):this (FullOpts)
-18 (-1.93 % of base) - System.Buffers.SharedArrayPool`1[double]:Rent(int):double[]:this
; Assembly listing for method System.Buffers.SharedArrayPool`1[double]:Rent(int):double[]: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; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 17 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T10] ( 9, 5.50) ref -> [rbp-0x40] this class-hnd single-def <System.Buffers.SharedArrayPool`1[double]>
+; V00 this [V00,T10] ( 9, 5.50) ref -> r15 this class-hnd single-def <System.Buffers.SharedArrayPool`1[double]>
; V01 arg1 [V01,T08] ( 9, 6 ) int -> rbx
-; V02 loc0 [V02,T16] ( 8, 4.50) ref -> [rbp-0x48] class-hnd exact spill-single-def <System.Buffers.ArrayPoolEventSource>
+; V02 loc0 [V02,T16] ( 8, 4.50) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
; V03 loc1 [V03,T11] ( 14, 7 ) ref -> registers class-hnd <double[]>
; V04 loc2 [V04,T14] ( 9, 5 ) int -> r13
-; V05 loc3 [V05,T18] ( 5, 3.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V06 loc4 [V06,T30] ( 3, 1.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
-; V07 loc5 [V07,T31] ( 3, 1.50) ref -> rax class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
-; V08 loc6 [V08,T34] ( 3, 1.50) int -> rbx
+; V05 loc3 [V05,T19] ( 5, 3.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V06 loc4 [V06,T32] ( 3, 1.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
+; V07 loc5 [V07,T33] ( 3, 1.50) ref -> rdi class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
+; V08 loc6 [V08,T36] ( 3, 1.50) int -> rbx
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T19] ( 2, 2 ) int -> [rbp-0x2C] spill-single-def "impAppendStmt"
-; V11 tmp2 [V11,T20] ( 2, 2 ) int -> [rbp-0x30] spill-single-def "impAppendStmt"
-; V12 tmp3 [V12,T21] ( 2, 2 ) int -> rcx "impAppendStmt"
+; V10 tmp1 [V10,T20] ( 2, 2 ) int -> [rbp-0x2C] spill-single-def "impAppendStmt"
+; V11 tmp2 [V11,T21] ( 2, 2 ) int -> [rbp-0x30] spill-single-def "impAppendStmt"
+; V12 tmp3 [V12,T22] ( 2, 2 ) int -> rcx "impAppendStmt"
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref single-def
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp14 [V23,T36] ( 2, 1 ) int -> r9
+; V23 tmp14 [V23,T40] ( 2, 1 ) int -> r9
;* V24 tmp15 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <double[]>
-; V25 tmp16 [V25,T22] ( 2, 2 ) int -> rbx "impAppendStmt"
-; V26 tmp17 [V26,T23] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
+; V25 tmp16 [V25,T23] ( 2, 2 ) int -> rbx "impAppendStmt"
+; V26 tmp17 [V26,T24] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <double[]>
-; V28 tmp19 [V28,T24] ( 2, 2 ) int -> r12 "impAppendStmt"
-; V29 tmp20 [V29,T25] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
+; V28 tmp19 [V28,T25] ( 2, 2 ) int -> r12 "impAppendStmt"
+; V29 tmp20 [V29,T26] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V32 tmp23 [V32,T32] ( 3, 1.50) ref -> rcx class-hnd "Inline return value spill temp" <System.Array>
-; V33 tmp24 [V33,T15] ( 3, 5 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+; V32 tmp23 [V32,T34] ( 3, 1.50) ref -> rcx class-hnd "Inline return value spill temp" <System.Array>
+; V33 tmp24 [V33,T15] ( 3, 5 ) ref -> r12 class-hnd exact single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
; V34 tmp25 [V34,T01] ( 7, 22.50) int -> rbx "Inline stloc first use temp"
-; V35 tmp26 [V35,T05] ( 4, 12.50) int -> r15 "Inline stloc first use temp"
+; V35 tmp26 [V35,T05] ( 4, 12.50) int -> [rbp-0x3C] "Inline stloc first use temp"
;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array>
;* V37 tmp28 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Array>
; V38 tmp29 [V38,T02] ( 2, 16 ) int -> rbx "dup spill"
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V40 tmp31 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V41 tmp32 [V41,T07] ( 4, 10.50) ref -> [rbp-0x58] class-hnd "Inline stloc first use temp" <System.Array>
-; V42 tmp33 [V42,T00] ( 7, 52 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-; V43 tmp34 [V43,T06] ( 4, 12 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
-; V44 tmp35 [V44,T03] ( 5, 14 ) int -> rcx "Inline stloc first use temp"
-; V45 tmp36 [V45,T33] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <double[]>
-;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V47 tmp38 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <double[]>
-; V48 tmp39 [V48,T26] ( 2, 2 ) int -> rcx "argument with side effect"
-; V49 tmp40 [V49,T27] ( 2, 2 ) int -> rcx "argument with side effect"
-; V50 tmp41 [V50,T28] ( 2, 2 ) int -> rcx "argument with side effect"
-; V51 cse0 [V51,T37] ( 2, 1 ) int -> rdi "CSE #04: moderate"
-; V52 cse1 [V52,T35] ( 3, 1.50) long -> rax "CSE #03: moderate"
-; V53 cse2 [V53,T04] ( 5, 13 ) int -> r14 "CSE #05: moderate"
-; V54 cse3 [V54,T09] ( 2, 8 ) int -> rdx "CSE #06: moderate"
-; V55 cse4 [V55,T38] ( 2, 1 ) int -> rdi "CSE #01: moderate"
-; V56 rat0 [V56,T29] ( 2, 2 ) int -> rbx "Spilling to split statement for tree"
-; V57 rat1 [V57,T17] ( 3, 4 ) byref -> rax "TLS field access"
-; V58 rat2 [V58,T13] ( 3, 6 ) long -> rax "TLS access"
-; V59 rat3 [V59,T12] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V40 tmp31 [V40,T37] ( 3, 1.50) int -> rbx "Inline return value spill temp"
+; V41 tmp32 [V41,T17] ( 4, 4 ) int -> rbx "dup spill"
+;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V43 tmp34 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
+; V44 tmp35 [V44,T07] ( 4, 10.50) ref -> [rbp-0x48] class-hnd "Inline stloc first use temp" <System.Array>
+; V45 tmp36 [V45,T00] ( 7, 52 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V46 tmp37 [V46,T06] ( 4, 12 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
+; V47 tmp38 [V47,T03] ( 5, 14 ) int -> rax "Inline stloc first use temp"
+; V48 tmp39 [V48,T35] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <double[]>
+;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V50 tmp41 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <double[]>
+; V51 tmp42 [V51,T27] ( 2, 2 ) int -> rcx "argument with side effect"
+; V52 tmp43 [V52,T28] ( 2, 2 ) int -> rcx "argument with side effect"
+; V53 tmp44 [V53,T29] ( 2, 2 ) int -> rcx "argument with side effect"
+; V54 cse0 [V54,T38] ( 3, 1.50) long -> rax "CSE #05: conservative"
+; V55 cse1 [V55,T41] ( 2, 1 ) int -> rdi "CSE #04: conservative"
+; V56 cse2 [V56,T39] ( 3, 1.50) long -> rax "CSE #03: conservative"
+; V57 cse3 [V57,T04] ( 5, 13 ) int -> [rbp-0x40] spill-single-def "CSE #06: moderate"
+; V58 cse4 [V58,T09] ( 2, 8 ) int -> rcx "CSE #07: moderate"
+; V59 cse5 [V59,T42] ( 2, 1 ) int -> rdi "CSE #01: conservative"
+; V60 rat0 [V60,T18] ( 3, 4 ) byref -> rax "TLS field access"
+; V61 rat1 [V61,T13] ( 3, 6 ) long -> rax "TLS access"
+; V62 rat2 [V62,T12] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V63 rat3 [V63,T30] ( 2, 2 ) long -> rax "TLS field access"
+; V64 rat4 [V64,T31] ( 2, 2 ) long -> rax "TLS access"
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M10898_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 56
- vzeroupper
- lea rbp, [rsp+0x60]
+ sub rsp, 40
+ lea rbp, [rsp+0x50]
mov r15, rdi
mov ebx, esi
- ;; size=27 bbWeight=1 PerfScore 8.25
+ ;; size=24 bbWeight=1 PerfScore 7.25
G_M10898_IG02:
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
- mov gword ptr [rbp-0x48], r14
lea edi, [rbx-0x01]
or edi, 15
xor r13d, r13d
lzcnt r13d, edi
xor r13d, 31
add r13d, -3
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 14
jle G_M10898_IG29
mov rdi, gword ptr [rax+0x08]
mov rax, bword ptr [rdi+0x70]
test rax, rax
je G_M10898_IG29
- ;; size=87 bbWeight=1 PerfScore 19.50
+ ;; size=83 bbWeight=1 PerfScore 18.50
G_M10898_IG03:
mov r12, gword ptr [rax+0x10]
test r12, r12
je SHORT G_M10898_IG05
;; size=9 bbWeight=1 PerfScore 3.25
G_M10898_IG04:
mov edi, dword ptr [r12+0x08]
cmp edi, r13d
jbe SHORT G_M10898_IG05
mov eax, r13d
shl rax, 4
mov rcx, gword ptr [r12+rax+0x10]
test rcx, rcx
jne G_M10898_IG25
;; size=31 bbWeight=0.50 PerfScore 3.62
G_M10898_IG05:
- mov gword ptr [rbp-0x40], r15
mov r12, gword ptr [r15+0x10]
mov edi, dword ptr [r12+0x08]
cmp edi, r13d
ja SHORT G_M10898_IG08
- mov r15, gword ptr [rbp-0x40]
test ebx, ebx
je SHORT G_M10898_IG06
mov edi, ebx
mov rsi, 0xD1FFAB1E ; 'minimumLength'
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
jmp G_M10898_IG21
- ;; size=55 bbWeight=0.50 PerfScore 7.12
+ ;; size=47 bbWeight=0.50 PerfScore 6.12
G_M10898_IG06:
mov rax, 0xD1FFAB1E ; 'System.Double[]'
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M10898_IG07:
- add rsp, 56
+ add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M10898_IG08:
- mov r15, gword ptr [rbp-0x40]
- mov eax, r13d
- mov rax, gword ptr [r12+8*rax+0x10]
- test rax, rax
+ mov edi, r13d
+ mov rdi, gword ptr [r12+8*rdi+0x10]
+ test rdi, rdi
je G_M10898_IG20
- mov gword ptr [rbp-0x40], r15
- mov r12, gword ptr [rax+0x08]
- mov gword ptr [rbp-0x50], r12
+ mov r12, gword ptr [rdi+0x08]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=43 bbWeight=0.50 PerfScore 4.38
+ call rax
+ add rax, 76
+ mov ebx, dword ptr [rax+0x10]
+ lea ecx, [rbx-0x01]
+ mov dword ptr [rax+0x10], ecx
+ movzx rax, bx
+ test eax, eax
+ je SHORT G_M10898_IG09
+ sar ebx, 16
+ jmp SHORT G_M10898_IG10
+ ;; size=68 bbWeight=0.50 PerfScore 8.38
G_M10898_IG09:
- call rax ; Interop+Sys:SchedGetCpu():int
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
mov ebx, eax
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- jne G_M10898_IG30
- ;; size=23 bbWeight=0.50 PerfScore 3.75
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
G_M10898_IG10:
mov rax, 0xD1FFAB1E ; global ptr
test byte ptr [rax], 1
- je G_M10898_IG31
+ je G_M10898_IG30
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M10898_IG11:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
mov eax, ebx
xor edx, edx
div edx:eax, dword ptr [rdi]
mov ebx, edx
- xor r15d, r15d
- mov r12, gword ptr [rbp-0x50]
- mov r14d, dword ptr [r12+0x08]
- test r14d, r14d
+ xor eax, eax
+ mov dword ptr [rbp-0x3C], eax
+ mov ecx, dword ptr [r12+0x08]
+ mov dword ptr [rbp-0x40], ecx
+ test ecx, ecx
jle SHORT G_M10898_IG17
- ;; size=35 bbWeight=0.50 PerfScore 15.25
+ ;; size=35 bbWeight=0.50 PerfScore 15.75
G_M10898_IG12:
- cmp ebx, r14d
- jae G_M10898_IG32
+ cmp ebx, ecx
+ jae G_M10898_IG31
mov edi, ebx
- mov rax, gword ptr [r12+8*rdi+0x10]
- mov gword ptr [rbp-0x60], rax
- cmp byte ptr [rax], al
- xor rcx, rcx
- mov gword ptr [rbp-0x58], rcx
- mov rdi, rax
+ mov rdx, gword ptr [r12+8*rdi+0x10]
+ mov gword ptr [rbp-0x50], rdx
+ cmp byte ptr [rdx], dl
+ xor rsi, rsi
+ mov gword ptr [rbp-0x48], rsi
+ mov rdi, rdx
call System.Threading.Monitor:Enter(System.Object)
- mov rax, gword ptr [rbp-0x60]
- mov rdi, gword ptr [rax+0x08]
- mov ecx, dword ptr [rax+0x10]
- dec ecx
- mov edx, dword ptr [rdi+0x08]
- cmp edx, ecx
+ mov rdx, gword ptr [rbp-0x50]
+ mov rdi, gword ptr [rdx+0x08]
+ mov eax, dword ptr [rdx+0x10]
+ dec eax
+ mov ecx, dword ptr [rdi+0x08]
+ cmp ecx, eax
jbe SHORT G_M10898_IG14
- ;; size=56 bbWeight=4 PerfScore 74.00
+ ;; size=55 bbWeight=4 PerfScore 74.00
G_M10898_IG13:
- mov edx, ecx
- mov rdx, gword ptr [rdi+8*rdx+0x10]
- mov gword ptr [rbp-0x58], rdx
- mov esi, ecx
+ mov ecx, eax
+ mov rsi, gword ptr [rdi+8*rcx+0x10]
+ mov gword ptr [rbp-0x48], rsi
+ mov esi, eax
xor r8, r8
mov gword ptr [rdi+8*rsi+0x10], r8
- mov dword ptr [rax+0x10], ecx
+ mov dword ptr [rdx+0x10], eax
;; size=24 bbWeight=2 PerfScore 11.50
G_M10898_IG14:
- mov rdi, rax
+ mov rdi, rdx
call System.Threading.Monitor:Exit(System.Object)
- mov rsi, gword ptr [rbp-0x58]
+ mov rsi, gword ptr [rbp-0x48]
test rsi, rsi
jne SHORT G_M10898_IG18
inc ebx
- cmp r14d, ebx
+ mov esi, dword ptr [rbp-0x40]
+ cmp esi, ebx
jne SHORT G_M10898_IG16
- ;; size=24 bbWeight=4 PerfScore 20.00
+ ;; size=26 bbWeight=4 PerfScore 24.00
G_M10898_IG15:
xor ebx, ebx
;; size=2 bbWeight=2 PerfScore 0.50
G_M10898_IG16:
- inc r15d
- cmp r14d, r15d
+ mov eax, dword ptr [rbp-0x3C]
+ inc eax
+ cmp esi, eax
+ mov dword ptr [rbp-0x3C], eax
+ mov ecx, esi
jg SHORT G_M10898_IG12
- ;; size=8 bbWeight=4 PerfScore 6.00
+ ;; size=14 bbWeight=4 PerfScore 15.00
G_M10898_IG17:
xor rcx, rcx
jmp SHORT G_M10898_IG19
;; size=4 bbWeight=0.50 PerfScore 1.12
G_M10898_IG18:
mov rcx, rsi
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M10898_IG19:
mov r12, rcx
test r12, r12
- mov r15, gword ptr [rbp-0x40]
jne G_M10898_IG24
- ;; size=16 bbWeight=0.50 PerfScore 1.25
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
G_M10898_IG20:
mov esi, 16
shlx ebx, esi, r13d
;; size=10 bbWeight=0.50 PerfScore 0.38
G_M10898_IG21:
cmp ebx, 256
jl SHORT G_M10898_IG22
mov esi, ebx
mov rdi, 0xD1FFAB1E ; double[]
mov edx, 16
call System.GC:AllocateNewArray(long,int,int):System.Array
mov r12, rax
jmp SHORT G_M10898_IG23
;; size=35 bbWeight=0.50 PerfScore 2.62
G_M10898_IG22:
movsxd rsi, ebx
mov rdi, 0xD1FFAB1E ; double[]
call CORINFO_HELP_NEWARR_1_VC
mov r12, rax
;; size=21 bbWeight=0.50 PerfScore 0.88
G_M10898_IG23:
- mov r14, gword ptr [rbp-0x48]
cmp byte ptr [r14+0x9D], 0
je G_M10898_IG26
cmp byte ptr [r12], r12b
mov rdi, r12
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ebx, eax
mov eax, dword ptr [r12+0x08]
mov dword ptr [rbp-0x2C], eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov esi, ebx
mov edx, dword ptr [rbp-0x2C]
mov rdi, r14
mov r8d, -1
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
mov eax, dword ptr [r12+0x08]
mov dword ptr [rbp-0x30], eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov rdi, gword ptr [r15+0x10]
mov r9d, 1
mov esi, 2
cmp dword ptr [rdi+0x08], r13d
cmovg r9d, esi
mov rdi, r14
mov esi, ebx
mov edx, dword ptr [rbp-0x30]
mov r8d, -1
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
jmp G_M10898_IG26
- ;; size=148 bbWeight=0.50 PerfScore 18.12
+ ;; size=144 bbWeight=0.50 PerfScore 17.62
G_M10898_IG24:
- mov r14, gword ptr [rbp-0x48]
cmp byte ptr [r14+0x9D], 0
je G_M10898_IG26
mov rdi, r12
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ebx, eax
mov eax, dword ptr [r12+0x08]
mov dword ptr [rbp-0x34], eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov esi, ebx
mov edx, dword ptr [rbp-0x34]
mov rdi, r14
mov r8d, r13d
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
jmp SHORT G_M10898_IG26
- ;; size=71 bbWeight=0.50 PerfScore 9.00
+ ;; size=67 bbWeight=0.50 PerfScore 8.50
G_M10898_IG25:
mov rbx, rcx
xor rdi, rdi
mov gword ptr [r12+rax+0x10], rdi
- mov r14, gword ptr [rbp-0x48]
cmp byte ptr [r14+0x9D], 0
je SHORT G_M10898_IG28
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov r12d, eax
mov eax, dword ptr [rbx+0x08]
mov dword ptr [rbp-0x38], eax
cmp byte ptr [r15], r15b
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov esi, r12d
mov edx, dword ptr [rbp-0x38]
mov rdi, r14
mov r8d, r13d
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
mov r12, rbx
- ;; size=81 bbWeight=0.50 PerfScore 10.38
+ ;; size=77 bbWeight=0.50 PerfScore 9.88
G_M10898_IG26:
mov rax, r12
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M10898_IG27:
- add rsp, 56
+ add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M10898_IG28:
mov r12, rbx
jmp SHORT G_M10898_IG26
;; size=5 bbWeight=0.25 PerfScore 0.56
G_M10898_IG29:
mov edi, 14
call CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
jmp G_M10898_IG03
;; size=15 bbWeight=0 PerfScore 0.00
G_M10898_IG30:
- call CORINFO_HELP_POLL_GC
- jmp G_M10898_IG10
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M10898_IG31:
mov rdi, 0xD1FFAB1E ; System.Buffers.SharedArrayPoolStatics
call CORINFO_HELP_GET_NONGCSTATIC_BASE
jmp G_M10898_IG11
;; size=20 bbWeight=0 PerfScore 0.00
-G_M10898_IG32:
+G_M10898_IG31:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 931, prolog size 27, PerfScore 228.19, instruction count 242, allocated bytes for code 931 (MethodHash=44d5d56d) for method System.Buffers.SharedArrayPool`1[double]:Rent(int):double[]:this (FullOpts)
+; Total bytes of code 913, prolog size 24, PerfScore 238.69, instruction count 243, allocated bytes for code 913 (MethodHash=44d5d56d) for method System.Buffers.SharedArrayPool`1[double]:Rent(int):double[]:this (FullOpts)
-18 (-1.93 % of base) - System.Buffers.SharedArrayPool`1[long]:Rent(int):long[]:this
; Assembly listing for method System.Buffers.SharedArrayPool`1[long]:Rent(int):long[]: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; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 17 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T10] ( 9, 5.50) ref -> [rbp-0x40] this class-hnd single-def <System.Buffers.SharedArrayPool`1[long]>
+; V00 this [V00,T10] ( 9, 5.50) ref -> r15 this class-hnd single-def <System.Buffers.SharedArrayPool`1[long]>
; V01 arg1 [V01,T08] ( 9, 6 ) int -> rbx
-; V02 loc0 [V02,T16] ( 8, 4.50) ref -> [rbp-0x48] class-hnd exact spill-single-def <System.Buffers.ArrayPoolEventSource>
+; V02 loc0 [V02,T16] ( 8, 4.50) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
; V03 loc1 [V03,T11] ( 14, 7 ) ref -> registers class-hnd <long[]>
; V04 loc2 [V04,T14] ( 9, 5 ) int -> r13
-; V05 loc3 [V05,T18] ( 5, 3.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V06 loc4 [V06,T30] ( 3, 1.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
-; V07 loc5 [V07,T31] ( 3, 1.50) ref -> rax class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
-; V08 loc6 [V08,T34] ( 3, 1.50) int -> rbx
+; V05 loc3 [V05,T19] ( 5, 3.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V06 loc4 [V06,T32] ( 3, 1.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
+; V07 loc5 [V07,T33] ( 3, 1.50) ref -> rdi class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
+; V08 loc6 [V08,T36] ( 3, 1.50) int -> rbx
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T19] ( 2, 2 ) int -> [rbp-0x2C] spill-single-def "impAppendStmt"
-; V11 tmp2 [V11,T20] ( 2, 2 ) int -> [rbp-0x30] spill-single-def "impAppendStmt"
-; V12 tmp3 [V12,T21] ( 2, 2 ) int -> rcx "impAppendStmt"
+; V10 tmp1 [V10,T20] ( 2, 2 ) int -> [rbp-0x2C] spill-single-def "impAppendStmt"
+; V11 tmp2 [V11,T21] ( 2, 2 ) int -> [rbp-0x30] spill-single-def "impAppendStmt"
+; V12 tmp3 [V12,T22] ( 2, 2 ) int -> rcx "impAppendStmt"
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref single-def
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp14 [V23,T36] ( 2, 1 ) int -> r9
+; V23 tmp14 [V23,T40] ( 2, 1 ) int -> r9
;* V24 tmp15 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <long[]>
-; V25 tmp16 [V25,T22] ( 2, 2 ) int -> rbx "impAppendStmt"
-; V26 tmp17 [V26,T23] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
+; V25 tmp16 [V25,T23] ( 2, 2 ) int -> rbx "impAppendStmt"
+; V26 tmp17 [V26,T24] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <long[]>
-; V28 tmp19 [V28,T24] ( 2, 2 ) int -> r12 "impAppendStmt"
-; V29 tmp20 [V29,T25] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
+; V28 tmp19 [V28,T25] ( 2, 2 ) int -> r12 "impAppendStmt"
+; V29 tmp20 [V29,T26] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V32 tmp23 [V32,T32] ( 3, 1.50) ref -> rcx class-hnd "Inline return value spill temp" <System.Array>
-; V33 tmp24 [V33,T15] ( 3, 5 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+; V32 tmp23 [V32,T34] ( 3, 1.50) ref -> rcx class-hnd "Inline return value spill temp" <System.Array>
+; V33 tmp24 [V33,T15] ( 3, 5 ) ref -> r12 class-hnd exact single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
; V34 tmp25 [V34,T01] ( 7, 22.50) int -> rbx "Inline stloc first use temp"
-; V35 tmp26 [V35,T05] ( 4, 12.50) int -> r15 "Inline stloc first use temp"
+; V35 tmp26 [V35,T05] ( 4, 12.50) int -> [rbp-0x3C] "Inline stloc first use temp"
;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array>
;* V37 tmp28 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Array>
; V38 tmp29 [V38,T02] ( 2, 16 ) int -> rbx "dup spill"
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V40 tmp31 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V41 tmp32 [V41,T07] ( 4, 10.50) ref -> [rbp-0x58] class-hnd "Inline stloc first use temp" <System.Array>
-; V42 tmp33 [V42,T00] ( 7, 52 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-; V43 tmp34 [V43,T06] ( 4, 12 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
-; V44 tmp35 [V44,T03] ( 5, 14 ) int -> rcx "Inline stloc first use temp"
-; V45 tmp36 [V45,T33] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <long[]>
-;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V47 tmp38 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <long[]>
-; V48 tmp39 [V48,T26] ( 2, 2 ) int -> rcx "argument with side effect"
-; V49 tmp40 [V49,T27] ( 2, 2 ) int -> rcx "argument with side effect"
-; V50 tmp41 [V50,T28] ( 2, 2 ) int -> rcx "argument with side effect"
-; V51 cse0 [V51,T37] ( 2, 1 ) int -> rdi "CSE #04: moderate"
-; V52 cse1 [V52,T35] ( 3, 1.50) long -> rax "CSE #03: moderate"
-; V53 cse2 [V53,T04] ( 5, 13 ) int -> r14 "CSE #05: moderate"
-; V54 cse3 [V54,T09] ( 2, 8 ) int -> rdx "CSE #06: moderate"
-; V55 cse4 [V55,T38] ( 2, 1 ) int -> rdi "CSE #01: moderate"
-; V56 rat0 [V56,T29] ( 2, 2 ) int -> rbx "Spilling to split statement for tree"
-; V57 rat1 [V57,T17] ( 3, 4 ) byref -> rax "TLS field access"
-; V58 rat2 [V58,T13] ( 3, 6 ) long -> rax "TLS access"
-; V59 rat3 [V59,T12] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V40 tmp31 [V40,T37] ( 3, 1.50) int -> rbx "Inline return value spill temp"
+; V41 tmp32 [V41,T17] ( 4, 4 ) int -> rbx "dup spill"
+;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V43 tmp34 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
+; V44 tmp35 [V44,T07] ( 4, 10.50) ref -> [rbp-0x48] class-hnd "Inline stloc first use temp" <System.Array>
+; V45 tmp36 [V45,T00] ( 7, 52 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V46 tmp37 [V46,T06] ( 4, 12 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
+; V47 tmp38 [V47,T03] ( 5, 14 ) int -> rax "Inline stloc first use temp"
+; V48 tmp39 [V48,T35] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <long[]>
+;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V50 tmp41 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <long[]>
+; V51 tmp42 [V51,T27] ( 2, 2 ) int -> rcx "argument with side effect"
+; V52 tmp43 [V52,T28] ( 2, 2 ) int -> rcx "argument with side effect"
+; V53 tmp44 [V53,T29] ( 2, 2 ) int -> rcx "argument with side effect"
+; V54 cse0 [V54,T38] ( 3, 1.50) long -> rax "CSE #05: conservative"
+; V55 cse1 [V55,T41] ( 2, 1 ) int -> rdi "CSE #04: conservative"
+; V56 cse2 [V56,T39] ( 3, 1.50) long -> rax "CSE #03: conservative"
+; V57 cse3 [V57,T04] ( 5, 13 ) int -> [rbp-0x40] spill-single-def "CSE #06: moderate"
+; V58 cse4 [V58,T09] ( 2, 8 ) int -> rcx "CSE #07: moderate"
+; V59 cse5 [V59,T42] ( 2, 1 ) int -> rdi "CSE #01: conservative"
+; V60 rat0 [V60,T18] ( 3, 4 ) byref -> rax "TLS field access"
+; V61 rat1 [V61,T13] ( 3, 6 ) long -> rax "TLS access"
+; V62 rat2 [V62,T12] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V63 rat3 [V63,T30] ( 2, 2 ) long -> rax "TLS field access"
+; V64 rat4 [V64,T31] ( 2, 2 ) long -> rax "TLS access"
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M38034_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 56
- vzeroupper
- lea rbp, [rsp+0x60]
+ sub rsp, 40
+ lea rbp, [rsp+0x50]
mov r15, rdi
mov ebx, esi
- ;; size=27 bbWeight=1 PerfScore 8.25
+ ;; size=24 bbWeight=1 PerfScore 7.25
G_M38034_IG02:
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
- mov gword ptr [rbp-0x48], r14
lea edi, [rbx-0x01]
or edi, 15
xor r13d, r13d
lzcnt r13d, edi
xor r13d, 31
add r13d, -3
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 16
jle G_M38034_IG29
mov rdi, gword ptr [rax+0x08]
mov rax, bword ptr [rdi+0x80]
test rax, rax
je G_M38034_IG29
- ;; size=90 bbWeight=1 PerfScore 19.50
+ ;; size=86 bbWeight=1 PerfScore 18.50
G_M38034_IG03:
mov r12, gword ptr [rax+0x10]
test r12, r12
je SHORT G_M38034_IG05
;; size=9 bbWeight=1 PerfScore 3.25
G_M38034_IG04:
mov edi, dword ptr [r12+0x08]
cmp edi, r13d
jbe SHORT G_M38034_IG05
mov eax, r13d
shl rax, 4
mov rcx, gword ptr [r12+rax+0x10]
test rcx, rcx
jne G_M38034_IG25
;; size=31 bbWeight=0.50 PerfScore 3.62
G_M38034_IG05:
- mov gword ptr [rbp-0x40], r15
mov r12, gword ptr [r15+0x10]
mov edi, dword ptr [r12+0x08]
cmp edi, r13d
ja SHORT G_M38034_IG08
- mov r15, gword ptr [rbp-0x40]
test ebx, ebx
je SHORT G_M38034_IG06
mov edi, ebx
mov rsi, 0xD1FFAB1E ; 'minimumLength'
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
jmp G_M38034_IG21
- ;; size=55 bbWeight=0.50 PerfScore 7.12
+ ;; size=47 bbWeight=0.50 PerfScore 6.12
G_M38034_IG06:
mov rax, 0xD1FFAB1E ; 'System.Int64[]'
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M38034_IG07:
- add rsp, 56
+ add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M38034_IG08:
- mov r15, gword ptr [rbp-0x40]
- mov eax, r13d
- mov rax, gword ptr [r12+8*rax+0x10]
- test rax, rax
+ mov edi, r13d
+ mov rdi, gword ptr [r12+8*rdi+0x10]
+ test rdi, rdi
je G_M38034_IG20
- mov gword ptr [rbp-0x40], r15
- mov r12, gword ptr [rax+0x08]
- mov gword ptr [rbp-0x50], r12
+ mov r12, gword ptr [rdi+0x08]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=43 bbWeight=0.50 PerfScore 4.38
+ call rax
+ add rax, 76
+ mov ebx, dword ptr [rax+0x10]
+ lea ecx, [rbx-0x01]
+ mov dword ptr [rax+0x10], ecx
+ movzx rax, bx
+ test eax, eax
+ je SHORT G_M38034_IG09
+ sar ebx, 16
+ jmp SHORT G_M38034_IG10
+ ;; size=68 bbWeight=0.50 PerfScore 8.38
G_M38034_IG09:
- call rax ; Interop+Sys:SchedGetCpu():int
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
mov ebx, eax
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- jne G_M38034_IG30
- ;; size=23 bbWeight=0.50 PerfScore 3.75
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
G_M38034_IG10:
mov rax, 0xD1FFAB1E ; global ptr
test byte ptr [rax], 1
- je G_M38034_IG31
+ je G_M38034_IG30
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M38034_IG11:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
mov eax, ebx
xor edx, edx
div edx:eax, dword ptr [rdi]
mov ebx, edx
- xor r15d, r15d
- mov r12, gword ptr [rbp-0x50]
- mov r14d, dword ptr [r12+0x08]
- test r14d, r14d
+ xor eax, eax
+ mov dword ptr [rbp-0x3C], eax
+ mov ecx, dword ptr [r12+0x08]
+ mov dword ptr [rbp-0x40], ecx
+ test ecx, ecx
jle SHORT G_M38034_IG17
- ;; size=35 bbWeight=0.50 PerfScore 15.25
+ ;; size=35 bbWeight=0.50 PerfScore 15.75
G_M38034_IG12:
- cmp ebx, r14d
- jae G_M38034_IG32
+ cmp ebx, ecx
+ jae G_M38034_IG31
mov edi, ebx
- mov rax, gword ptr [r12+8*rdi+0x10]
- mov gword ptr [rbp-0x60], rax
- cmp byte ptr [rax], al
- xor rcx, rcx
- mov gword ptr [rbp-0x58], rcx
- mov rdi, rax
+ mov rdx, gword ptr [r12+8*rdi+0x10]
+ mov gword ptr [rbp-0x50], rdx
+ cmp byte ptr [rdx], dl
+ xor rsi, rsi
+ mov gword ptr [rbp-0x48], rsi
+ mov rdi, rdx
call System.Threading.Monitor:Enter(System.Object)
- mov rax, gword ptr [rbp-0x60]
- mov rdi, gword ptr [rax+0x08]
- mov ecx, dword ptr [rax+0x10]
- dec ecx
- mov edx, dword ptr [rdi+0x08]
- cmp edx, ecx
+ mov rdx, gword ptr [rbp-0x50]
+ mov rdi, gword ptr [rdx+0x08]
+ mov eax, dword ptr [rdx+0x10]
+ dec eax
+ mov ecx, dword ptr [rdi+0x08]
+ cmp ecx, eax
jbe SHORT G_M38034_IG14
- ;; size=56 bbWeight=4 PerfScore 74.00
+ ;; size=55 bbWeight=4 PerfScore 74.00
G_M38034_IG13:
- mov edx, ecx
- mov rdx, gword ptr [rdi+8*rdx+0x10]
- mov gword ptr [rbp-0x58], rdx
- mov esi, ecx
+ mov ecx, eax
+ mov rsi, gword ptr [rdi+8*rcx+0x10]
+ mov gword ptr [rbp-0x48], rsi
+ mov esi, eax
xor r8, r8
mov gword ptr [rdi+8*rsi+0x10], r8
- mov dword ptr [rax+0x10], ecx
+ mov dword ptr [rdx+0x10], eax
;; size=24 bbWeight=2 PerfScore 11.50
G_M38034_IG14:
- mov rdi, rax
+ mov rdi, rdx
call System.Threading.Monitor:Exit(System.Object)
- mov rsi, gword ptr [rbp-0x58]
+ mov rsi, gword ptr [rbp-0x48]
test rsi, rsi
jne SHORT G_M38034_IG18
inc ebx
- cmp r14d, ebx
+ mov esi, dword ptr [rbp-0x40]
+ cmp esi, ebx
jne SHORT G_M38034_IG16
- ;; size=24 bbWeight=4 PerfScore 20.00
+ ;; size=26 bbWeight=4 PerfScore 24.00
G_M38034_IG15:
xor ebx, ebx
;; size=2 bbWeight=2 PerfScore 0.50
G_M38034_IG16:
- inc r15d
- cmp r14d, r15d
+ mov eax, dword ptr [rbp-0x3C]
+ inc eax
+ cmp esi, eax
+ mov dword ptr [rbp-0x3C], eax
+ mov ecx, esi
jg SHORT G_M38034_IG12
- ;; size=8 bbWeight=4 PerfScore 6.00
+ ;; size=14 bbWeight=4 PerfScore 15.00
G_M38034_IG17:
xor rcx, rcx
jmp SHORT G_M38034_IG19
;; size=4 bbWeight=0.50 PerfScore 1.12
G_M38034_IG18:
mov rcx, rsi
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M38034_IG19:
mov r12, rcx
test r12, r12
- mov r15, gword ptr [rbp-0x40]
jne G_M38034_IG24
- ;; size=16 bbWeight=0.50 PerfScore 1.25
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
G_M38034_IG20:
mov esi, 16
shlx ebx, esi, r13d
;; size=10 bbWeight=0.50 PerfScore 0.38
G_M38034_IG21:
cmp ebx, 256
jl SHORT G_M38034_IG22
mov esi, ebx
mov rdi, 0xD1FFAB1E ; long[]
mov edx, 16
call System.GC:AllocateNewArray(long,int,int):System.Array
mov r12, rax
jmp SHORT G_M38034_IG23
;; size=35 bbWeight=0.50 PerfScore 2.62
G_M38034_IG22:
movsxd rsi, ebx
mov rdi, 0xD1FFAB1E ; long[]
call CORINFO_HELP_NEWARR_1_VC
mov r12, rax
;; size=21 bbWeight=0.50 PerfScore 0.88
G_M38034_IG23:
- mov r14, gword ptr [rbp-0x48]
cmp byte ptr [r14+0x9D], 0
je G_M38034_IG26
cmp byte ptr [r12], r12b
mov rdi, r12
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ebx, eax
mov eax, dword ptr [r12+0x08]
mov dword ptr [rbp-0x2C], eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov esi, ebx
mov edx, dword ptr [rbp-0x2C]
mov rdi, r14
mov r8d, -1
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
mov eax, dword ptr [r12+0x08]
mov dword ptr [rbp-0x30], eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov rdi, gword ptr [r15+0x10]
mov r9d, 1
mov esi, 2
cmp dword ptr [rdi+0x08], r13d
cmovg r9d, esi
mov rdi, r14
mov esi, ebx
mov edx, dword ptr [rbp-0x30]
mov r8d, -1
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
jmp G_M38034_IG26
- ;; size=148 bbWeight=0.50 PerfScore 18.12
+ ;; size=144 bbWeight=0.50 PerfScore 17.62
G_M38034_IG24:
- mov r14, gword ptr [rbp-0x48]
cmp byte ptr [r14+0x9D], 0
je G_M38034_IG26
mov rdi, r12
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ebx, eax
mov eax, dword ptr [r12+0x08]
mov dword ptr [rbp-0x34], eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov esi, ebx
mov edx, dword ptr [rbp-0x34]
mov rdi, r14
mov r8d, r13d
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
jmp SHORT G_M38034_IG26
- ;; size=71 bbWeight=0.50 PerfScore 9.00
+ ;; size=67 bbWeight=0.50 PerfScore 8.50
G_M38034_IG25:
mov rbx, rcx
xor rdi, rdi
mov gword ptr [r12+rax+0x10], rdi
- mov r14, gword ptr [rbp-0x48]
cmp byte ptr [r14+0x9D], 0
je SHORT G_M38034_IG28
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov r12d, eax
mov eax, dword ptr [rbx+0x08]
mov dword ptr [rbp-0x38], eax
cmp byte ptr [r15], r15b
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov esi, r12d
mov edx, dword ptr [rbp-0x38]
mov rdi, r14
mov r8d, r13d
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
mov r12, rbx
- ;; size=81 bbWeight=0.50 PerfScore 10.38
+ ;; size=77 bbWeight=0.50 PerfScore 9.88
G_M38034_IG26:
mov rax, r12
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M38034_IG27:
- add rsp, 56
+ add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M38034_IG28:
mov r12, rbx
jmp SHORT G_M38034_IG26
;; size=5 bbWeight=0.25 PerfScore 0.56
G_M38034_IG29:
mov edi, 16
call CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
jmp G_M38034_IG03
;; size=15 bbWeight=0 PerfScore 0.00
G_M38034_IG30:
- call CORINFO_HELP_POLL_GC
- jmp G_M38034_IG10
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M38034_IG31:
mov rdi, 0xD1FFAB1E ; System.Buffers.SharedArrayPoolStatics
call CORINFO_HELP_GET_NONGCSTATIC_BASE
jmp G_M38034_IG11
;; size=20 bbWeight=0 PerfScore 0.00
-G_M38034_IG32:
+G_M38034_IG31:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 934, prolog size 27, PerfScore 228.19, instruction count 242, allocated bytes for code 934 (MethodHash=287b6b6d) for method System.Buffers.SharedArrayPool`1[long]:Rent(int):long[]:this (FullOpts)
+; Total bytes of code 916, prolog size 24, PerfScore 238.69, instruction count 243, allocated bytes for code 916 (MethodHash=287b6b6d) for method System.Buffers.SharedArrayPool`1[long]:Rent(int):long[]:this (FullOpts)
-18 (-1.93 % of base) - System.Buffers.SharedArrayPool`1[short]:Rent(int):short[]:this
; Assembly listing for method System.Buffers.SharedArrayPool`1[short]:Rent(int):short[]: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; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 17 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T10] ( 9, 5.50) ref -> [rbp-0x40] this class-hnd single-def <System.Buffers.SharedArrayPool`1[short]>
+; V00 this [V00,T10] ( 9, 5.50) ref -> r15 this class-hnd single-def <System.Buffers.SharedArrayPool`1[short]>
; V01 arg1 [V01,T08] ( 9, 6 ) int -> rbx
-; V02 loc0 [V02,T16] ( 8, 4.50) ref -> [rbp-0x48] class-hnd exact spill-single-def <System.Buffers.ArrayPoolEventSource>
+; V02 loc0 [V02,T16] ( 8, 4.50) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
; V03 loc1 [V03,T11] ( 14, 7 ) ref -> registers class-hnd <short[]>
; V04 loc2 [V04,T14] ( 9, 5 ) int -> r13
-; V05 loc3 [V05,T18] ( 5, 3.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V06 loc4 [V06,T30] ( 3, 1.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
-; V07 loc5 [V07,T31] ( 3, 1.50) ref -> rax class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
-; V08 loc6 [V08,T34] ( 3, 1.50) int -> rbx
+; V05 loc3 [V05,T19] ( 5, 3.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V06 loc4 [V06,T32] ( 3, 1.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
+; V07 loc5 [V07,T33] ( 3, 1.50) ref -> rdi class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
+; V08 loc6 [V08,T36] ( 3, 1.50) int -> rbx
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T19] ( 2, 2 ) int -> [rbp-0x2C] spill-single-def "impAppendStmt"
-; V11 tmp2 [V11,T20] ( 2, 2 ) int -> [rbp-0x30] spill-single-def "impAppendStmt"
-; V12 tmp3 [V12,T21] ( 2, 2 ) int -> rcx "impAppendStmt"
+; V10 tmp1 [V10,T20] ( 2, 2 ) int -> [rbp-0x2C] spill-single-def "impAppendStmt"
+; V11 tmp2 [V11,T21] ( 2, 2 ) int -> [rbp-0x30] spill-single-def "impAppendStmt"
+; V12 tmp3 [V12,T22] ( 2, 2 ) int -> rcx "impAppendStmt"
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref single-def
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp14 [V23,T36] ( 2, 1 ) int -> r9
+; V23 tmp14 [V23,T40] ( 2, 1 ) int -> r9
;* V24 tmp15 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <short[]>
-; V25 tmp16 [V25,T22] ( 2, 2 ) int -> rbx "impAppendStmt"
-; V26 tmp17 [V26,T23] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
+; V25 tmp16 [V25,T23] ( 2, 2 ) int -> rbx "impAppendStmt"
+; V26 tmp17 [V26,T24] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <short[]>
-; V28 tmp19 [V28,T24] ( 2, 2 ) int -> r12 "impAppendStmt"
-; V29 tmp20 [V29,T25] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
+; V28 tmp19 [V28,T25] ( 2, 2 ) int -> r12 "impAppendStmt"
+; V29 tmp20 [V29,T26] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V32 tmp23 [V32,T32] ( 3, 1.50) ref -> rcx class-hnd "Inline return value spill temp" <System.Array>
-; V33 tmp24 [V33,T15] ( 3, 5 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+; V32 tmp23 [V32,T34] ( 3, 1.50) ref -> rcx class-hnd "Inline return value spill temp" <System.Array>
+; V33 tmp24 [V33,T15] ( 3, 5 ) ref -> r12 class-hnd exact single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
; V34 tmp25 [V34,T01] ( 7, 22.50) int -> rbx "Inline stloc first use temp"
-; V35 tmp26 [V35,T05] ( 4, 12.50) int -> r15 "Inline stloc first use temp"
+; V35 tmp26 [V35,T05] ( 4, 12.50) int -> [rbp-0x3C] "Inline stloc first use temp"
;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array>
;* V37 tmp28 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Array>
; V38 tmp29 [V38,T02] ( 2, 16 ) int -> rbx "dup spill"
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V40 tmp31 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V41 tmp32 [V41,T07] ( 4, 10.50) ref -> [rbp-0x58] class-hnd "Inline stloc first use temp" <System.Array>
-; V42 tmp33 [V42,T00] ( 7, 52 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-; V43 tmp34 [V43,T06] ( 4, 12 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
-; V44 tmp35 [V44,T03] ( 5, 14 ) int -> rcx "Inline stloc first use temp"
-; V45 tmp36 [V45,T33] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <short[]>
-;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V47 tmp38 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <short[]>
-; V48 tmp39 [V48,T26] ( 2, 2 ) int -> rcx "argument with side effect"
-; V49 tmp40 [V49,T27] ( 2, 2 ) int -> rcx "argument with side effect"
-; V50 tmp41 [V50,T28] ( 2, 2 ) int -> rcx "argument with side effect"
-; V51 cse0 [V51,T37] ( 2, 1 ) int -> rdi "CSE #04: moderate"
-; V52 cse1 [V52,T35] ( 3, 1.50) long -> rax "CSE #03: moderate"
-; V53 cse2 [V53,T04] ( 5, 13 ) int -> r14 "CSE #05: moderate"
-; V54 cse3 [V54,T09] ( 2, 8 ) int -> rdx "CSE #06: moderate"
-; V55 cse4 [V55,T38] ( 2, 1 ) int -> rdi "CSE #01: moderate"
-; V56 rat0 [V56,T29] ( 2, 2 ) int -> rbx "Spilling to split statement for tree"
-; V57 rat1 [V57,T17] ( 3, 4 ) byref -> rax "TLS field access"
-; V58 rat2 [V58,T13] ( 3, 6 ) long -> rax "TLS access"
-; V59 rat3 [V59,T12] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V40 tmp31 [V40,T37] ( 3, 1.50) int -> rbx "Inline return value spill temp"
+; V41 tmp32 [V41,T17] ( 4, 4 ) int -> rbx "dup spill"
+;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V43 tmp34 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
+; V44 tmp35 [V44,T07] ( 4, 10.50) ref -> [rbp-0x48] class-hnd "Inline stloc first use temp" <System.Array>
+; V45 tmp36 [V45,T00] ( 7, 52 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V46 tmp37 [V46,T06] ( 4, 12 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
+; V47 tmp38 [V47,T03] ( 5, 14 ) int -> rax "Inline stloc first use temp"
+; V48 tmp39 [V48,T35] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <short[]>
+;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V50 tmp41 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <short[]>
+; V51 tmp42 [V51,T27] ( 2, 2 ) int -> rcx "argument with side effect"
+; V52 tmp43 [V52,T28] ( 2, 2 ) int -> rcx "argument with side effect"
+; V53 tmp44 [V53,T29] ( 2, 2 ) int -> rcx "argument with side effect"
+; V54 cse0 [V54,T38] ( 3, 1.50) long -> rax "CSE #05: conservative"
+; V55 cse1 [V55,T41] ( 2, 1 ) int -> rdi "CSE #04: conservative"
+; V56 cse2 [V56,T39] ( 3, 1.50) long -> rax "CSE #03: conservative"
+; V57 cse3 [V57,T04] ( 5, 13 ) int -> [rbp-0x40] spill-single-def "CSE #06: moderate"
+; V58 cse4 [V58,T09] ( 2, 8 ) int -> rcx "CSE #07: moderate"
+; V59 cse5 [V59,T42] ( 2, 1 ) int -> rdi "CSE #01: conservative"
+; V60 rat0 [V60,T18] ( 3, 4 ) byref -> rax "TLS field access"
+; V61 rat1 [V61,T13] ( 3, 6 ) long -> rax "TLS access"
+; V62 rat2 [V62,T12] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V63 rat3 [V63,T30] ( 2, 2 ) long -> rax "TLS field access"
+; V64 rat4 [V64,T31] ( 2, 2 ) long -> rax "TLS access"
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M58514_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 56
- vzeroupper
- lea rbp, [rsp+0x60]
+ sub rsp, 40
+ lea rbp, [rsp+0x50]
mov r15, rdi
mov ebx, esi
- ;; size=27 bbWeight=1 PerfScore 8.25
+ ;; size=24 bbWeight=1 PerfScore 7.25
G_M58514_IG02:
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
- mov gword ptr [rbp-0x48], r14
lea edi, [rbx-0x01]
or edi, 15
xor r13d, r13d
lzcnt r13d, edi
xor r13d, 31
add r13d, -3
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 13
jle G_M58514_IG29
mov rdi, gword ptr [rax+0x08]
mov rax, bword ptr [rdi+0x68]
test rax, rax
je G_M58514_IG29
- ;; size=87 bbWeight=1 PerfScore 19.50
+ ;; size=83 bbWeight=1 PerfScore 18.50
G_M58514_IG03:
mov r12, gword ptr [rax+0x10]
test r12, r12
je SHORT G_M58514_IG05
;; size=9 bbWeight=1 PerfScore 3.25
G_M58514_IG04:
mov edi, dword ptr [r12+0x08]
cmp edi, r13d
jbe SHORT G_M58514_IG05
mov eax, r13d
shl rax, 4
mov rcx, gword ptr [r12+rax+0x10]
test rcx, rcx
jne G_M58514_IG25
;; size=31 bbWeight=0.50 PerfScore 3.62
G_M58514_IG05:
- mov gword ptr [rbp-0x40], r15
mov r12, gword ptr [r15+0x10]
mov edi, dword ptr [r12+0x08]
cmp edi, r13d
ja SHORT G_M58514_IG08
- mov r15, gword ptr [rbp-0x40]
test ebx, ebx
je SHORT G_M58514_IG06
mov edi, ebx
mov rsi, 0xD1FFAB1E ; 'minimumLength'
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
jmp G_M58514_IG21
- ;; size=55 bbWeight=0.50 PerfScore 7.12
+ ;; size=47 bbWeight=0.50 PerfScore 6.12
G_M58514_IG06:
mov rax, 0xD1FFAB1E ; 'System.Int16[]'
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M58514_IG07:
- add rsp, 56
+ add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M58514_IG08:
- mov r15, gword ptr [rbp-0x40]
- mov eax, r13d
- mov rax, gword ptr [r12+8*rax+0x10]
- test rax, rax
+ mov edi, r13d
+ mov rdi, gword ptr [r12+8*rdi+0x10]
+ test rdi, rdi
je G_M58514_IG20
- mov gword ptr [rbp-0x40], r15
- mov r12, gword ptr [rax+0x08]
- mov gword ptr [rbp-0x50], r12
+ mov r12, gword ptr [rdi+0x08]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=43 bbWeight=0.50 PerfScore 4.38
+ call rax
+ add rax, 76
+ mov ebx, dword ptr [rax+0x10]
+ lea ecx, [rbx-0x01]
+ mov dword ptr [rax+0x10], ecx
+ movzx rax, bx
+ test eax, eax
+ je SHORT G_M58514_IG09
+ sar ebx, 16
+ jmp SHORT G_M58514_IG10
+ ;; size=68 bbWeight=0.50 PerfScore 8.38
G_M58514_IG09:
- call rax ; Interop+Sys:SchedGetCpu():int
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
mov ebx, eax
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- jne G_M58514_IG30
- ;; size=23 bbWeight=0.50 PerfScore 3.75
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
G_M58514_IG10:
mov rax, 0xD1FFAB1E ; global ptr
test byte ptr [rax], 1
- je G_M58514_IG31
+ je G_M58514_IG30
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M58514_IG11:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
mov eax, ebx
xor edx, edx
div edx:eax, dword ptr [rdi]
mov ebx, edx
- xor r15d, r15d
- mov r12, gword ptr [rbp-0x50]
- mov r14d, dword ptr [r12+0x08]
- test r14d, r14d
+ xor eax, eax
+ mov dword ptr [rbp-0x3C], eax
+ mov ecx, dword ptr [r12+0x08]
+ mov dword ptr [rbp-0x40], ecx
+ test ecx, ecx
jle SHORT G_M58514_IG17
- ;; size=35 bbWeight=0.50 PerfScore 15.25
+ ;; size=35 bbWeight=0.50 PerfScore 15.75
G_M58514_IG12:
- cmp ebx, r14d
- jae G_M58514_IG32
+ cmp ebx, ecx
+ jae G_M58514_IG31
mov edi, ebx
- mov rax, gword ptr [r12+8*rdi+0x10]
- mov gword ptr [rbp-0x60], rax
- cmp byte ptr [rax], al
- xor rcx, rcx
- mov gword ptr [rbp-0x58], rcx
- mov rdi, rax
+ mov rdx, gword ptr [r12+8*rdi+0x10]
+ mov gword ptr [rbp-0x50], rdx
+ cmp byte ptr [rdx], dl
+ xor rsi, rsi
+ mov gword ptr [rbp-0x48], rsi
+ mov rdi, rdx
call System.Threading.Monitor:Enter(System.Object)
- mov rax, gword ptr [rbp-0x60]
- mov rdi, gword ptr [rax+0x08]
- mov ecx, dword ptr [rax+0x10]
- dec ecx
- mov edx, dword ptr [rdi+0x08]
- cmp edx, ecx
+ mov rdx, gword ptr [rbp-0x50]
+ mov rdi, gword ptr [rdx+0x08]
+ mov eax, dword ptr [rdx+0x10]
+ dec eax
+ mov ecx, dword ptr [rdi+0x08]
+ cmp ecx, eax
jbe SHORT G_M58514_IG14
- ;; size=56 bbWeight=4 PerfScore 74.00
+ ;; size=55 bbWeight=4 PerfScore 74.00
G_M58514_IG13:
- mov edx, ecx
- mov rdx, gword ptr [rdi+8*rdx+0x10]
- mov gword ptr [rbp-0x58], rdx
- mov esi, ecx
+ mov ecx, eax
+ mov rsi, gword ptr [rdi+8*rcx+0x10]
+ mov gword ptr [rbp-0x48], rsi
+ mov esi, eax
xor r8, r8
mov gword ptr [rdi+8*rsi+0x10], r8
- mov dword ptr [rax+0x10], ecx
+ mov dword ptr [rdx+0x10], eax
;; size=24 bbWeight=2 PerfScore 11.50
G_M58514_IG14:
- mov rdi, rax
+ mov rdi, rdx
call System.Threading.Monitor:Exit(System.Object)
- mov rsi, gword ptr [rbp-0x58]
+ mov rsi, gword ptr [rbp-0x48]
test rsi, rsi
jne SHORT G_M58514_IG18
inc ebx
- cmp r14d, ebx
+ mov esi, dword ptr [rbp-0x40]
+ cmp esi, ebx
jne SHORT G_M58514_IG16
- ;; size=24 bbWeight=4 PerfScore 20.00
+ ;; size=26 bbWeight=4 PerfScore 24.00
G_M58514_IG15:
xor ebx, ebx
;; size=2 bbWeight=2 PerfScore 0.50
G_M58514_IG16:
- inc r15d
- cmp r14d, r15d
+ mov eax, dword ptr [rbp-0x3C]
+ inc eax
+ cmp esi, eax
+ mov dword ptr [rbp-0x3C], eax
+ mov ecx, esi
jg SHORT G_M58514_IG12
- ;; size=8 bbWeight=4 PerfScore 6.00
+ ;; size=14 bbWeight=4 PerfScore 15.00
G_M58514_IG17:
xor rcx, rcx
jmp SHORT G_M58514_IG19
;; size=4 bbWeight=0.50 PerfScore 1.12
G_M58514_IG18:
mov rcx, rsi
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M58514_IG19:
mov r12, rcx
test r12, r12
- mov r15, gword ptr [rbp-0x40]
jne G_M58514_IG24
- ;; size=16 bbWeight=0.50 PerfScore 1.25
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
G_M58514_IG20:
mov esi, 16
shlx ebx, esi, r13d
;; size=10 bbWeight=0.50 PerfScore 0.38
G_M58514_IG21:
cmp ebx, 0x400
jl SHORT G_M58514_IG22
mov esi, ebx
mov rdi, 0xD1FFAB1E ; short[]
mov edx, 16
call System.GC:AllocateNewArray(long,int,int):System.Array
mov r12, rax
jmp SHORT G_M58514_IG23
;; size=35 bbWeight=0.50 PerfScore 2.62
G_M58514_IG22:
movsxd rsi, ebx
mov rdi, 0xD1FFAB1E ; short[]
call CORINFO_HELP_NEWARR_1_VC
mov r12, rax
;; size=21 bbWeight=0.50 PerfScore 0.88
G_M58514_IG23:
- mov r14, gword ptr [rbp-0x48]
cmp byte ptr [r14+0x9D], 0
je G_M58514_IG26
cmp byte ptr [r12], r12b
mov rdi, r12
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ebx, eax
mov eax, dword ptr [r12+0x08]
mov dword ptr [rbp-0x2C], eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov esi, ebx
mov edx, dword ptr [rbp-0x2C]
mov rdi, r14
mov r8d, -1
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
mov eax, dword ptr [r12+0x08]
mov dword ptr [rbp-0x30], eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov rdi, gword ptr [r15+0x10]
mov r9d, 1
mov esi, 2
cmp dword ptr [rdi+0x08], r13d
cmovg r9d, esi
mov rdi, r14
mov esi, ebx
mov edx, dword ptr [rbp-0x30]
mov r8d, -1
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
jmp G_M58514_IG26
- ;; size=148 bbWeight=0.50 PerfScore 18.12
+ ;; size=144 bbWeight=0.50 PerfScore 17.62
G_M58514_IG24:
- mov r14, gword ptr [rbp-0x48]
cmp byte ptr [r14+0x9D], 0
je G_M58514_IG26
mov rdi, r12
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ebx, eax
mov eax, dword ptr [r12+0x08]
mov dword ptr [rbp-0x34], eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov esi, ebx
mov edx, dword ptr [rbp-0x34]
mov rdi, r14
mov r8d, r13d
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
jmp SHORT G_M58514_IG26
- ;; size=71 bbWeight=0.50 PerfScore 9.00
+ ;; size=67 bbWeight=0.50 PerfScore 8.50
G_M58514_IG25:
mov rbx, rcx
xor rdi, rdi
mov gword ptr [r12+rax+0x10], rdi
- mov r14, gword ptr [rbp-0x48]
cmp byte ptr [r14+0x9D], 0
je SHORT G_M58514_IG28
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov r12d, eax
mov eax, dword ptr [rbx+0x08]
mov dword ptr [rbp-0x38], eax
cmp byte ptr [r15], r15b
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov esi, r12d
mov edx, dword ptr [rbp-0x38]
mov rdi, r14
mov r8d, r13d
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
mov r12, rbx
- ;; size=81 bbWeight=0.50 PerfScore 10.38
+ ;; size=77 bbWeight=0.50 PerfScore 9.88
G_M58514_IG26:
mov rax, r12
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M58514_IG27:
- add rsp, 56
+ add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M58514_IG28:
mov r12, rbx
jmp SHORT G_M58514_IG26
;; size=5 bbWeight=0.25 PerfScore 0.56
G_M58514_IG29:
mov edi, 13
call CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
jmp G_M58514_IG03
;; size=15 bbWeight=0 PerfScore 0.00
G_M58514_IG30:
- call CORINFO_HELP_POLL_GC
- jmp G_M58514_IG10
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M58514_IG31:
mov rdi, 0xD1FFAB1E ; System.Buffers.SharedArrayPoolStatics
call CORINFO_HELP_GET_NONGCSTATIC_BASE
jmp G_M58514_IG11
;; size=20 bbWeight=0 PerfScore 0.00
-G_M58514_IG32:
+G_M58514_IG31:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 931, prolog size 27, PerfScore 228.19, instruction count 242, allocated bytes for code 931 (MethodHash=7c1a1b6d) for method System.Buffers.SharedArrayPool`1[short]:Rent(int):short[]:this (FullOpts)
+; Total bytes of code 913, prolog size 24, PerfScore 238.69, instruction count 243, allocated bytes for code 913 (MethodHash=7c1a1b6d) for method System.Buffers.SharedArrayPool`1[short]:Rent(int):short[]:this (FullOpts)
-18 (-1.91 % of base) - System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:Rent(int):System.Nullable`1[int][]:this
; Assembly listing for method System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:Rent(int):System.Nullable`1[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; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 17 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T10] ( 9, 5.50) ref -> [rbp-0x40] this class-hnd single-def <System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]>
+; V00 this [V00,T10] ( 9, 5.50) ref -> r15 this class-hnd single-def <System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]>
; V01 arg1 [V01,T08] ( 9, 6 ) int -> rbx
-; V02 loc0 [V02,T17] ( 8, 4.50) ref -> [rbp-0x48] class-hnd exact spill-single-def <System.Buffers.ArrayPoolEventSource>
+; V02 loc0 [V02,T17] ( 8, 4.50) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
; V03 loc1 [V03,T11] ( 14, 7 ) ref -> registers class-hnd <System.Nullable`1[int][]>
; V04 loc2 [V04,T15] ( 9, 5 ) int -> r13
-; V05 loc3 [V05,T19] ( 5, 3.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V06 loc4 [V06,T31] ( 3, 1.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
-; V07 loc5 [V07,T32] ( 3, 1.50) ref -> rax class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
-; V08 loc6 [V08,T35] ( 3, 1.50) int -> rbx
+; V05 loc3 [V05,T20] ( 5, 3.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V06 loc4 [V06,T33] ( 3, 1.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
+; V07 loc5 [V07,T34] ( 3, 1.50) ref -> rdi class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
+; V08 loc6 [V08,T37] ( 3, 1.50) int -> rbx
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T20] ( 2, 2 ) int -> [rbp-0x2C] spill-single-def "impAppendStmt"
-; V11 tmp2 [V11,T21] ( 2, 2 ) int -> [rbp-0x30] spill-single-def "impAppendStmt"
-; V12 tmp3 [V12,T22] ( 2, 2 ) int -> rcx "impAppendStmt"
+; V10 tmp1 [V10,T21] ( 2, 2 ) int -> [rbp-0x2C] spill-single-def "impAppendStmt"
+; V11 tmp2 [V11,T22] ( 2, 2 ) int -> [rbp-0x30] spill-single-def "impAppendStmt"
+; V12 tmp3 [V12,T23] ( 2, 2 ) int -> rcx "impAppendStmt"
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref single-def
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp14 [V23,T37] ( 2, 1 ) int -> r9
+; V23 tmp14 [V23,T41] ( 2, 1 ) int -> r9
;* V24 tmp15 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Nullable`1[int][]>
-; V25 tmp16 [V25,T23] ( 2, 2 ) int -> rbx "impAppendStmt"
-; V26 tmp17 [V26,T24] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
+; V25 tmp16 [V25,T24] ( 2, 2 ) int -> rbx "impAppendStmt"
+; V26 tmp17 [V26,T25] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Nullable`1[int][]>
-; V28 tmp19 [V28,T25] ( 2, 2 ) int -> r12 "impAppendStmt"
-; V29 tmp20 [V29,T26] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
+; V28 tmp19 [V28,T26] ( 2, 2 ) int -> r12 "impAppendStmt"
+; V29 tmp20 [V29,T27] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V32 tmp23 [V32,T33] ( 3, 1.50) ref -> rcx class-hnd "Inline return value spill temp" <System.Array>
-; V33 tmp24 [V33,T16] ( 3, 5 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+; V32 tmp23 [V32,T35] ( 3, 1.50) ref -> rcx class-hnd "Inline return value spill temp" <System.Array>
+; V33 tmp24 [V33,T16] ( 3, 5 ) ref -> r12 class-hnd exact single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
; V34 tmp25 [V34,T01] ( 7, 22.50) int -> rbx "Inline stloc first use temp"
-; V35 tmp26 [V35,T05] ( 4, 12.50) int -> r15 "Inline stloc first use temp"
+; V35 tmp26 [V35,T05] ( 4, 12.50) int -> [rbp-0x3C] "Inline stloc first use temp"
;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array>
;* V37 tmp28 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Array>
; V38 tmp29 [V38,T02] ( 2, 16 ) int -> rbx "dup spill"
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V40 tmp31 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V41 tmp32 [V41,T07] ( 4, 10.50) ref -> [rbp-0x58] class-hnd "Inline stloc first use temp" <System.Array>
-; V42 tmp33 [V42,T00] ( 7, 52 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-; V43 tmp34 [V43,T06] ( 4, 12 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
-; V44 tmp35 [V44,T03] ( 5, 14 ) int -> rcx "Inline stloc first use temp"
-; V45 tmp36 [V45,T34] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <System.Nullable`1[int][]>
-;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V47 tmp38 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Nullable`1[int][]>
-; V48 tmp39 [V48,T27] ( 2, 2 ) int -> rcx "argument with side effect"
-; V49 tmp40 [V49,T28] ( 2, 2 ) int -> rcx "argument with side effect"
-; V50 tmp41 [V50,T29] ( 2, 2 ) int -> rcx "argument with side effect"
-; V51 cse0 [V51,T38] ( 2, 1 ) int -> rdi "CSE #04: moderate"
-; V52 cse1 [V52,T36] ( 3, 1.50) long -> rax "CSE #03: moderate"
-; V53 cse2 [V53,T04] ( 5, 13 ) int -> r14 "CSE #05: moderate"
-; V54 cse3 [V54,T09] ( 2, 8 ) int -> rdx "CSE #06: moderate"
-; V55 cse4 [V55,T39] ( 2, 1 ) int -> rdi "CSE #01: moderate"
-; V56 rat0 [V56,T30] ( 2, 2 ) int -> rbx "Spilling to split statement for tree"
-; V57 rat1 [V57,T18] ( 3, 4 ) byref -> rax "TLS field access"
-; V58 rat2 [V58,T13] ( 3, 6 ) long -> rax "TLS access"
-; V59 rat3 [V59,T12] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
-; V60 rat4 [V60,T14] ( 3, 6 ) int -> rsi "ReplaceWithLclVar is creating a new local variable"
+; V40 tmp31 [V40,T38] ( 3, 1.50) int -> rbx "Inline return value spill temp"
+; V41 tmp32 [V41,T18] ( 4, 4 ) int -> rbx "dup spill"
+;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V43 tmp34 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
+; V44 tmp35 [V44,T07] ( 4, 10.50) ref -> [rbp-0x48] class-hnd "Inline stloc first use temp" <System.Array>
+; V45 tmp36 [V45,T00] ( 7, 52 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V46 tmp37 [V46,T06] ( 4, 12 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
+; V47 tmp38 [V47,T03] ( 5, 14 ) int -> rax "Inline stloc first use temp"
+; V48 tmp39 [V48,T36] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <System.Nullable`1[int][]>
+;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V50 tmp41 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Nullable`1[int][]>
+; V51 tmp42 [V51,T28] ( 2, 2 ) int -> rcx "argument with side effect"
+; V52 tmp43 [V52,T29] ( 2, 2 ) int -> rcx "argument with side effect"
+; V53 tmp44 [V53,T30] ( 2, 2 ) int -> rcx "argument with side effect"
+; V54 cse0 [V54,T39] ( 3, 1.50) long -> rax "CSE #05: conservative"
+; V55 cse1 [V55,T42] ( 2, 1 ) int -> rdi "CSE #04: conservative"
+; V56 cse2 [V56,T40] ( 3, 1.50) long -> rax "CSE #03: conservative"
+; V57 cse3 [V57,T04] ( 5, 13 ) int -> [rbp-0x40] spill-single-def "CSE #06: moderate"
+; V58 cse4 [V58,T09] ( 2, 8 ) int -> rcx "CSE #07: moderate"
+; V59 cse5 [V59,T43] ( 2, 1 ) int -> rdi "CSE #01: conservative"
+; V60 rat0 [V60,T19] ( 3, 4 ) byref -> rax "TLS field access"
+; V61 rat1 [V61,T13] ( 3, 6 ) long -> rax "TLS access"
+; V62 rat2 [V62,T12] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V63 rat3 [V63,T31] ( 2, 2 ) long -> rax "TLS field access"
+; V64 rat4 [V64,T32] ( 2, 2 ) long -> rax "TLS access"
+; V65 rat5 [V65,T14] ( 3, 6 ) int -> rsi "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M14930_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 56
- vzeroupper
- lea rbp, [rsp+0x60]
+ sub rsp, 40
+ lea rbp, [rsp+0x50]
mov r15, rdi
mov ebx, esi
- ;; size=27 bbWeight=1 PerfScore 8.25
+ ;; size=24 bbWeight=1 PerfScore 7.25
G_M14930_IG02:
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
- mov gword ptr [rbp-0x48], r14
lea edi, [rbx-0x01]
or edi, 15
xor r13d, r13d
lzcnt r13d, edi
xor r13d, 31
add r13d, -3
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 17
jle G_M14930_IG29
mov rdi, gword ptr [rax+0x08]
mov esi, 8
mov eax, esi
shl eax, 4
add eax, esi
mov rax, bword ptr [rdi+rax]
test rax, rax
je G_M14930_IG29
- ;; size=99 bbWeight=1 PerfScore 20.75
+ ;; size=95 bbWeight=1 PerfScore 19.75
G_M14930_IG03:
mov r12, gword ptr [rax+0x10]
test r12, r12
je SHORT G_M14930_IG05
;; size=9 bbWeight=1 PerfScore 3.25
G_M14930_IG04:
mov edi, dword ptr [r12+0x08]
cmp edi, r13d
jbe SHORT G_M14930_IG05
mov eax, r13d
shl rax, 4
mov rcx, gword ptr [r12+rax+0x10]
test rcx, rcx
jne G_M14930_IG25
;; size=31 bbWeight=0.50 PerfScore 3.62
G_M14930_IG05:
- mov gword ptr [rbp-0x40], r15
mov r12, gword ptr [r15+0x10]
mov edi, dword ptr [r12+0x08]
cmp edi, r13d
ja SHORT G_M14930_IG08
- mov r15, gword ptr [rbp-0x40]
test ebx, ebx
je SHORT G_M14930_IG06
mov edi, ebx
mov rsi, 0xD1FFAB1E ; 'minimumLength'
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
jmp G_M14930_IG21
- ;; size=55 bbWeight=0.50 PerfScore 7.12
+ ;; size=47 bbWeight=0.50 PerfScore 6.12
G_M14930_IG06:
mov rax, 0xD1FFAB1E ; 'System.Nullable`1[System.Int32][]'
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M14930_IG07:
- add rsp, 56
+ add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M14930_IG08:
- mov r15, gword ptr [rbp-0x40]
- mov eax, r13d
- mov rax, gword ptr [r12+8*rax+0x10]
- test rax, rax
+ mov edi, r13d
+ mov rdi, gword ptr [r12+8*rdi+0x10]
+ test rdi, rdi
je G_M14930_IG20
- mov gword ptr [rbp-0x40], r15
- mov r12, gword ptr [rax+0x08]
- mov gword ptr [rbp-0x50], r12
+ mov r12, gword ptr [rdi+0x08]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=43 bbWeight=0.50 PerfScore 4.38
+ call rax
+ add rax, 76
+ mov ebx, dword ptr [rax+0x10]
+ lea ecx, [rbx-0x01]
+ mov dword ptr [rax+0x10], ecx
+ movzx rax, bx
+ test eax, eax
+ je SHORT G_M14930_IG09
+ sar ebx, 16
+ jmp SHORT G_M14930_IG10
+ ;; size=68 bbWeight=0.50 PerfScore 8.38
G_M14930_IG09:
- call rax ; Interop+Sys:SchedGetCpu():int
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
mov ebx, eax
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- jne G_M14930_IG30
- ;; size=23 bbWeight=0.50 PerfScore 3.75
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
G_M14930_IG10:
mov rax, 0xD1FFAB1E ; global ptr
test byte ptr [rax], 1
- je G_M14930_IG31
+ je G_M14930_IG30
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M14930_IG11:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
mov eax, ebx
xor edx, edx
div edx:eax, dword ptr [rdi]
mov ebx, edx
- xor r15d, r15d
- mov r12, gword ptr [rbp-0x50]
- mov r14d, dword ptr [r12+0x08]
- test r14d, r14d
+ xor eax, eax
+ mov dword ptr [rbp-0x3C], eax
+ mov ecx, dword ptr [r12+0x08]
+ mov dword ptr [rbp-0x40], ecx
+ test ecx, ecx
jle SHORT G_M14930_IG17
- ;; size=35 bbWeight=0.50 PerfScore 15.25
+ ;; size=35 bbWeight=0.50 PerfScore 15.75
G_M14930_IG12:
- cmp ebx, r14d
- jae G_M14930_IG32
+ cmp ebx, ecx
+ jae G_M14930_IG31
mov edi, ebx
- mov rax, gword ptr [r12+8*rdi+0x10]
- mov gword ptr [rbp-0x60], rax
- cmp byte ptr [rax], al
- xor rcx, rcx
- mov gword ptr [rbp-0x58], rcx
- mov rdi, rax
+ mov rdx, gword ptr [r12+8*rdi+0x10]
+ mov gword ptr [rbp-0x50], rdx
+ cmp byte ptr [rdx], dl
+ xor rsi, rsi
+ mov gword ptr [rbp-0x48], rsi
+ mov rdi, rdx
call System.Threading.Monitor:Enter(System.Object)
- mov rax, gword ptr [rbp-0x60]
- mov rdi, gword ptr [rax+0x08]
- mov ecx, dword ptr [rax+0x10]
- dec ecx
- mov edx, dword ptr [rdi+0x08]
- cmp edx, ecx
+ mov rdx, gword ptr [rbp-0x50]
+ mov rdi, gword ptr [rdx+0x08]
+ mov eax, dword ptr [rdx+0x10]
+ dec eax
+ mov ecx, dword ptr [rdi+0x08]
+ cmp ecx, eax
jbe SHORT G_M14930_IG14
- ;; size=56 bbWeight=4 PerfScore 74.00
+ ;; size=55 bbWeight=4 PerfScore 74.00
G_M14930_IG13:
- mov edx, ecx
- mov rdx, gword ptr [rdi+8*rdx+0x10]
- mov gword ptr [rbp-0x58], rdx
- mov esi, ecx
+ mov ecx, eax
+ mov rsi, gword ptr [rdi+8*rcx+0x10]
+ mov gword ptr [rbp-0x48], rsi
+ mov esi, eax
xor r8, r8
mov gword ptr [rdi+8*rsi+0x10], r8
- mov dword ptr [rax+0x10], ecx
+ mov dword ptr [rdx+0x10], eax
;; size=24 bbWeight=2 PerfScore 11.50
G_M14930_IG14:
- mov rdi, rax
+ mov rdi, rdx
call System.Threading.Monitor:Exit(System.Object)
- mov rsi, gword ptr [rbp-0x58]
+ mov rsi, gword ptr [rbp-0x48]
test rsi, rsi
jne SHORT G_M14930_IG18
inc ebx
- cmp r14d, ebx
+ mov esi, dword ptr [rbp-0x40]
+ cmp esi, ebx
jne SHORT G_M14930_IG16
- ;; size=24 bbWeight=4 PerfScore 20.00
+ ;; size=26 bbWeight=4 PerfScore 24.00
G_M14930_IG15:
xor ebx, ebx
;; size=2 bbWeight=2 PerfScore 0.50
G_M14930_IG16:
- inc r15d
- cmp r14d, r15d
+ mov eax, dword ptr [rbp-0x3C]
+ inc eax
+ cmp esi, eax
+ mov dword ptr [rbp-0x3C], eax
+ mov ecx, esi
jg SHORT G_M14930_IG12
- ;; size=8 bbWeight=4 PerfScore 6.00
+ ;; size=14 bbWeight=4 PerfScore 15.00
G_M14930_IG17:
xor rcx, rcx
jmp SHORT G_M14930_IG19
;; size=4 bbWeight=0.50 PerfScore 1.12
G_M14930_IG18:
mov rcx, rsi
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M14930_IG19:
mov r12, rcx
test r12, r12
- mov r15, gword ptr [rbp-0x40]
jne G_M14930_IG24
- ;; size=16 bbWeight=0.50 PerfScore 1.25
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
G_M14930_IG20:
mov esi, 16
shlx ebx, esi, r13d
;; size=10 bbWeight=0.50 PerfScore 0.38
G_M14930_IG21:
cmp ebx, 256
jl SHORT G_M14930_IG22
mov esi, ebx
mov rdi, 0xD1FFAB1E ; System.Nullable`1[int][]
mov edx, 16
call System.GC:AllocateNewArray(long,int,int):System.Array
mov r12, rax
jmp SHORT G_M14930_IG23
;; size=35 bbWeight=0.50 PerfScore 2.62
G_M14930_IG22:
movsxd rsi, ebx
mov rdi, 0xD1FFAB1E ; System.Nullable`1[int][]
call CORINFO_HELP_NEWARR_1_VC
mov r12, rax
;; size=21 bbWeight=0.50 PerfScore 0.88
G_M14930_IG23:
- mov r14, gword ptr [rbp-0x48]
cmp byte ptr [r14+0x9D], 0
je G_M14930_IG26
cmp byte ptr [r12], r12b
mov rdi, r12
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ebx, eax
mov eax, dword ptr [r12+0x08]
mov dword ptr [rbp-0x2C], eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov esi, ebx
mov edx, dword ptr [rbp-0x2C]
mov rdi, r14
mov r8d, -1
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
mov eax, dword ptr [r12+0x08]
mov dword ptr [rbp-0x30], eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov rdi, gword ptr [r15+0x10]
mov r9d, 1
mov esi, 2
cmp dword ptr [rdi+0x08], r13d
cmovg r9d, esi
mov rdi, r14
mov esi, ebx
mov edx, dword ptr [rbp-0x30]
mov r8d, -1
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
jmp G_M14930_IG26
- ;; size=148 bbWeight=0.50 PerfScore 18.12
+ ;; size=144 bbWeight=0.50 PerfScore 17.62
G_M14930_IG24:
- mov r14, gword ptr [rbp-0x48]
cmp byte ptr [r14+0x9D], 0
je G_M14930_IG26
mov rdi, r12
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ebx, eax
mov eax, dword ptr [r12+0x08]
mov dword ptr [rbp-0x34], eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov esi, ebx
mov edx, dword ptr [rbp-0x34]
mov rdi, r14
mov r8d, r13d
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
jmp SHORT G_M14930_IG26
- ;; size=71 bbWeight=0.50 PerfScore 9.00
+ ;; size=67 bbWeight=0.50 PerfScore 8.50
G_M14930_IG25:
mov rbx, rcx
xor rdi, rdi
mov gword ptr [r12+rax+0x10], rdi
- mov r14, gword ptr [rbp-0x48]
cmp byte ptr [r14+0x9D], 0
je SHORT G_M14930_IG28
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov r12d, eax
mov eax, dword ptr [rbx+0x08]
mov dword ptr [rbp-0x38], eax
cmp byte ptr [r15], r15b
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov esi, r12d
mov edx, dword ptr [rbp-0x38]
mov rdi, r14
mov r8d, r13d
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
mov r12, rbx
- ;; size=81 bbWeight=0.50 PerfScore 10.38
+ ;; size=77 bbWeight=0.50 PerfScore 9.88
G_M14930_IG26:
mov rax, r12
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M14930_IG27:
- add rsp, 56
+ add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M14930_IG28:
mov r12, rbx
jmp SHORT G_M14930_IG26
;; size=5 bbWeight=0.25 PerfScore 0.56
G_M14930_IG29:
mov edi, 17
call CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
jmp G_M14930_IG03
;; size=15 bbWeight=0 PerfScore 0.00
G_M14930_IG30:
- call CORINFO_HELP_POLL_GC
- jmp G_M14930_IG10
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M14930_IG31:
mov rdi, 0xD1FFAB1E ; System.Buffers.SharedArrayPoolStatics
call CORINFO_HELP_GET_NONGCSTATIC_BASE
jmp G_M14930_IG11
;; size=20 bbWeight=0 PerfScore 0.00
-G_M14930_IG32:
+G_M14930_IG31:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 943, prolog size 27, PerfScore 229.44, instruction count 246, allocated bytes for code 943 (MethodHash=5baac5ad) for method System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:Rent(int):System.Nullable`1[int][]:this (FullOpts)
+; Total bytes of code 925, prolog size 24, PerfScore 239.94, instruction count 247, allocated bytes for code 925 (MethodHash=5baac5ad) for method System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:Rent(int):System.Nullable`1[int][]:this (FullOpts)