130 (55.79 % of base) - System.Net.Cookie:Equals(System.Object):ubyte:this
; Assembly listing for method System.Net.Cookie:Equals(System.Object):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; 14 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 7, 4.50) ref -> rbx this class-hnd single-def <System.Net.Cookie>
; V01 arg1 [V01,T01] ( 5, 3.75) ref -> rsi class-hnd single-def <System.Object>
-; V02 loc0 [V02,T04] ( 6, 3 ) ref -> r15 class-hnd exact <System.Net.Cookie>
+; V02 loc0 [V02,T05] ( 6, 3 ) ref -> r15 class-hnd exact <System.Net.Cookie>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <System.Net.Cookie>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
+;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V11 tmp8 [V11,T02] ( 4, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.String>
+; V11 tmp8 [V11,T03] ( 4, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.String>
;* V12 tmp9 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V14 tmp11 [V14,T05] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
-; V15 tmp12 [V15,T07] ( 2, 2 ) int -> rdi "Inlining Arg"
-;* V16 tmp13 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp14 [V17,T03] ( 4, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.String>
+; V14 tmp11 [V14,T15] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V15 tmp12 [V15,T19] ( 2, 2 ) int -> rdi "Inlining Arg"
+;* V16 tmp13 [V16 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+; V17 tmp14 [V17,T04] ( 4, 4 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
;* V18 tmp15 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V19 tmp16 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V20 tmp17 [V20,T06] ( 2, 2 ) byref -> rcx single-def "Inlining Arg"
-; V21 tmp18 [V21,T08] ( 2, 2 ) int -> rdi "Inlining Arg"
-; V22 tmp19 [V22,T09] ( 3, 1.50) byref -> rsi "field V08._reference (fldOffset=0x0)" P-INDEP
-; V23 tmp20 [V23,T11] ( 3, 1.50) int -> rdx "field V08._length (fldOffset=0x8)" P-INDEP
-;* V24 tmp21 [V24 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp22 [V25 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V26 tmp23 [V26,T13] ( 2, 1 ) byref -> rsi single-def "field V12._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp24 [V27,T15] ( 2, 1 ) int -> rdi "field V12._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp25 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp26 [V29 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V30 tmp27 [V30,T10] ( 3, 1.50) byref -> rcx "field V16._reference (fldOffset=0x0)" P-INDEP
-; V31 tmp28 [V31,T12] ( 3, 1.50) int -> rax "field V16._length (fldOffset=0x8)" P-INDEP
-; V32 tmp29 [V32,T14] ( 2, 1 ) byref -> rcx single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-; V33 tmp30 [V33,T16] ( 2, 1 ) int -> rdi "field V18._length (fldOffset=0x8)" P-INDEP
-;* V34 tmp31 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
-;* V35 tmp32 [V35 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
+; V20 tmp17 [V20,T16] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V21 tmp18 [V21,T20] ( 2, 2 ) int -> rdx "Inlining Arg"
+;* V22 tmp19 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V23 tmp20 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V24 tmp21 [V24,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V25 tmp22 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V26 tmp23 [V26 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inline stloc first use temp"
+;* V27 tmp24 [V27 ] ( 0, 0 ) byref -> zero-ref
+;* V28 tmp25 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V29 tmp26 [V29,T17] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V30 tmp27 [V30,T21] ( 2, 2 ) int -> rdi "Inlining Arg"
+;* V31 tmp28 [V31,T32] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp29 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V33 tmp30 [V33 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inline stloc first use temp"
+;* V34 tmp31 [V34 ] ( 0, 0 ) byref -> zero-ref
+;* V35 tmp32 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V36 tmp33 [V36,T18] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V37 tmp34 [V37,T22] ( 2, 2 ) int -> rdx "Inlining Arg"
+;* V38 tmp35 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V39 tmp36 [V39 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V40 tmp37 [V40 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+; V41 tmp38 [V41,T10] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+;* V42 tmp39 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V43 tmp40 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V44 tmp41 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
+;* V45 tmp42 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V46 tmp43 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+; V47 tmp44 [V47,T11] ( 4, 2 ) ubyte -> rax "Inline return value spill temp"
+;* V48 tmp45 [V48 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V49 tmp46 [V49 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+; V50 tmp47 [V50,T08] ( 4, 2 ) byref -> rsi "field V08._reference (fldOffset=0x0)" P-INDEP
+; V51 tmp48 [V51,T12] ( 4, 2 ) int -> rdi "field V08._length (fldOffset=0x8)" P-INDEP
+;* V52 tmp49 [V52 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V53 tmp50 [V53 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
+; V54 tmp51 [V54,T23] ( 2, 1 ) byref -> rsi single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+; V55 tmp52 [V55,T27] ( 2, 1 ) int -> rdi "field V12._length (fldOffset=0x8)" P-INDEP
+;* V56 tmp53 [V56 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;* V57 tmp54 [V57 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
+; V58 tmp55 [V58,T09] ( 4, 2 ) byref -> rax "field V16._reference (fldOffset=0x0)" P-INDEP
+; V59 tmp56 [V59,T13] ( 4, 2 ) int -> rdx "field V16._length (fldOffset=0x8)" P-INDEP
+; V60 tmp57 [V60,T24] ( 2, 1 ) byref -> rax single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V61 tmp58 [V61,T28] ( 2, 1 ) int -> rdx "field V18._length (fldOffset=0x8)" P-INDEP
+;* V62 tmp59 [V62 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
+;* V63 tmp60 [V63 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
+; V64 tmp61 [V64,T06] ( 6, 3 ) byref -> rcx "field V22._reference (fldOffset=0x0)" P-INDEP
+; V65 tmp62 [V65,T14] ( 4, 2 ) int -> r8 "field V22._length (fldOffset=0x8)" P-INDEP
+; V66 tmp63 [V66,T07] ( 6, 3 ) byref -> r9 "field V23._reference (fldOffset=0x0)" P-INDEP
+; V67 tmp64 [V67,T02] ( 10, 5 ) int -> r10 "field V23._length (fldOffset=0x8)" P-INDEP
+;* V68 tmp65 [V68 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP
+;* V69 tmp66 [V69 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
+; V70 tmp67 [V70,T25] ( 2, 1 ) byref -> rcx single-def "field V28._reference (fldOffset=0x0)" P-INDEP
+; V71 tmp68 [V71,T29] ( 2, 1 ) int -> r8 "field V28._length (fldOffset=0x8)" P-INDEP
+;* V72 tmp69 [V72 ] ( 0, 0 ) byref -> zero-ref single-def "field V32._reference (fldOffset=0x0)" P-INDEP
+;* V73 tmp70 [V73 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
+; V74 tmp71 [V74,T26] ( 2, 1 ) byref -> r9 single-def "field V35._reference (fldOffset=0x0)" P-INDEP
+; V75 tmp72 [V75,T30] ( 2, 1 ) int -> r10 "field V35._length (fldOffset=0x8)" P-INDEP
+;* V76 tmp73 [V76 ] ( 0, 0 ) byref -> zero-ref single-def "field V39._reference (fldOffset=0x0)" P-INDEP
+;* V77 tmp74 [V77 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
+;* V78 tmp75 [V78 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
+;* V79 tmp76 [V79 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
+;* V80 tmp77 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V81 tmp78 [V81 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
+;* V82 tmp79 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP
+;* V83 tmp80 [V83 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
+;* V84 tmp81 [V84 ] ( 0, 0 ) byref -> zero-ref single-def "field V45._reference (fldOffset=0x0)" P-INDEP
+;* V85 tmp82 [V85 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
+;* V86 tmp83 [V86 ] ( 0, 0 ) byref -> zero-ref single-def "field V46._reference (fldOffset=0x0)" P-INDEP
+;* V87 tmp84 [V87 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M1639_IG01:
push rbp
push r15
push rbx
lea rbp, [rsp+0x10]
mov rbx, rdi
;; size=12 bbWeight=1 PerfScore 3.75
G_M1639_IG02:
test rsi, rsi
- je G_M1639_IG10
+ je G_M1639_IG16
;; size=9 bbWeight=1 PerfScore 1.25
G_M1639_IG03:
mov rdi, 0xD1FFAB1E ; System.Net.Cookie
cmp qword ptr [rsi], rdi
- jne G_M1639_IG10
+ jne G_M1639_IG16
;; size=19 bbWeight=0.25 PerfScore 1.06
G_M1639_IG04:
mov r15, rsi
mov rdi, gword ptr [rbx+0x20]
mov rsi, gword ptr [r15+0x20]
mov edx, 5
mov rax, 0xD1FFAB1E ; code for System.String:Equals(System.String,System.String,int):ubyte
call [rax]System.String:Equals(System.String,System.String,int):ubyte
test eax, eax
- je G_M1639_IG10
+ je G_M1639_IG16
mov rdi, gword ptr [rbx+0x40]
mov rsi, gword ptr [r15+0x40]
mov edx, 4
mov rax, 0xD1FFAB1E ; code for System.String:Equals(System.String,System.String,int):ubyte
call [rax]System.String:Equals(System.String,System.String,int):ubyte
test eax, eax
- je SHORT G_M1639_IG10
+ je G_M1639_IG16
mov rdi, gword ptr [rbx+0x28]
mov rsi, gword ptr [r15+0x28]
mov edx, 4
mov rax, 0xD1FFAB1E ; code for System.String:Equals(System.String,System.String,int):ubyte
call [rax]System.String:Equals(System.String,System.String,int):ubyte
test eax, eax
- je SHORT G_M1639_IG10
+ je G_M1639_IG16
mov rdi, gword ptr [rbx+0x18]
test rdi, rdi
je SHORT G_M1639_IG05
lea rsi, bword ptr [rdi+0x0C]
mov edi, dword ptr [rdi+0x08]
- mov edx, edi
jmp SHORT G_M1639_IG06
- ;; size=114 bbWeight=0.50 PerfScore 17.25
+ ;; size=120 bbWeight=0.50 PerfScore 17.12
G_M1639_IG05:
xor rsi, rsi
- xor edx, edx
+ xor edi, edi
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M1639_IG06:
- mov rdi, gword ptr [r15+0x18]
- test rdi, rdi
+ mov rdx, gword ptr [r15+0x18]
+ test rdx, rdx
je SHORT G_M1639_IG07
- lea rcx, bword ptr [rdi+0x0C]
- mov edi, dword ptr [rdi+0x08]
- mov eax, edi
+ lea rax, bword ptr [rdx+0x0C]
+ mov edx, dword ptr [rdx+0x08]
jmp SHORT G_M1639_IG08
- ;; size=20 bbWeight=0.50 PerfScore 4.00
+ ;; size=18 bbWeight=0.50 PerfScore 3.88
G_M1639_IG07:
- xor rcx, rcx
- xor eax, eax
+ xor rax, rax
+ xor edx, edx
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M1639_IG08:
- mov rdi, rsi
- mov esi, edx
- mov rdx, rcx
- mov ecx, eax
- mov rax, 0xD1FFAB1E ; code for System.Net.CookieComparer:EqualDomains(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):ubyte
- call [rax]System.Net.CookieComparer:EqualDomains(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):ubyte
- test eax, eax
+ mov rcx, rsi
+ mov r8d, edi
+ mov r9, rax
+ mov r10d, edx
+ test r8d, r8d
+ je SHORT G_M1639_IG09
+ cmp word ptr [rcx], 46
+ jne SHORT G_M1639_IG09
+ add rsi, 2
+ dec edi
+ mov rcx, rsi
+ mov r8d, edi
+ ;; size=35 bbWeight=0.50 PerfScore 3.62
+G_M1639_IG09:
+ test r10d, r10d
je SHORT G_M1639_IG10
+ cmp word ptr [r9], 46
+ jne SHORT G_M1639_IG10
+ add rax, 2
+ dec edx
+ mov r9, rax
+ mov r10d, edx
+ ;; size=24 bbWeight=0.50 PerfScore 3.12
+G_M1639_IG10:
+ cmp r8d, r10d
+ jne SHORT G_M1639_IG16
+ test r10d, r10d
+ je SHORT G_M1639_IG14
+ cmp r10d, 8
+ jl SHORT G_M1639_IG12
+ cmp r10d, 16
+ jge SHORT G_M1639_IG11
+ mov rdi, rcx
+ mov rsi, r9
+ mov edx, r10d
+ mov rax, 0xD1FFAB1E ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte
+ call [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte
+ jmp SHORT G_M1639_IG13
+ ;; size=45 bbWeight=0.50 PerfScore 5.50
+G_M1639_IG11:
+ mov rdi, rcx
+ mov rsi, r9
+ mov edx, r10d
+ mov rax, 0xD1FFAB1E ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector256`1[ushort]](byref,byref,int):ubyte
+ call [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector256`1[ushort]](byref,byref,int):ubyte
+ jmp SHORT G_M1639_IG13
+ ;; size=23 bbWeight=0.50 PerfScore 3.00
+G_M1639_IG12:
+ mov rdi, rcx
+ mov rsi, r9
+ mov edx, r10d
+ mov rax, 0xD1FFAB1E ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Scalar(byref,byref,int):ubyte
+ call [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Scalar(byref,byref,int):ubyte
+ ;; size=21 bbWeight=0.50 PerfScore 2.00
+G_M1639_IG13:
+ test eax, eax
+ je SHORT G_M1639_IG16
+ ;; size=4 bbWeight=0.50 PerfScore 0.62
+G_M1639_IG14:
mov eax, dword ptr [rbx+0x54]
cmp eax, dword ptr [r15+0x54]
sete al
movzx rax, al
- ;; size=39 bbWeight=0.50 PerfScore 5.88
-G_M1639_IG09:
+ ;; size=13 bbWeight=0.50 PerfScore 3.12
+G_M1639_IG15:
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M1639_IG10:
+G_M1639_IG16:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M1639_IG11:
+G_M1639_IG17:
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 233, prolog size 9, PerfScore 36.31, instruction count 71, allocated bytes for code 233 (MethodHash=fcf9f998) for method System.Net.Cookie:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 363, prolog size 9, PerfScore 51.19, instruction count 108, allocated bytes for code 363 (MethodHash=fcf9f998) for method System.Net.Cookie:Equals(System.Object):ubyte:this (FullOpts)
126 (80.77 % of base) - System.Net.CookieComparer:Equals(System.Net.Cookie,System.Net.Cookie):ubyte
; Assembly listing for method System.Net.CookieComparer:Equals(System.Net.Cookie,System.Net.Cookie):ubyte (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; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 16 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <System.Net.Cookie>
; V01 arg1 [V01,T01] ( 5, 4 ) ref -> r15 class-hnd single-def <System.Net.Cookie>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
+;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-; V07 tmp5 [V07,T02] ( 4, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.String>
+; V07 tmp5 [V07,T03] ( 4, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.String>
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp8 [V10,T04] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
-; V11 tmp9 [V11,T06] ( 2, 2 ) int -> rdi "Inlining Arg"
-;* V12 tmp10 [V12 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V13 tmp11 [V13,T03] ( 4, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.String>
+; V10 tmp8 [V10,T14] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V11 tmp9 [V11,T18] ( 2, 2 ) int -> rdi "Inlining Arg"
+;* V12 tmp10 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+; V13 tmp11 [V13,T04] ( 4, 4 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
;* V14 tmp12 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V16 tmp14 [V16,T05] ( 2, 2 ) byref -> rcx single-def "Inlining Arg"
-; V17 tmp15 [V17,T07] ( 2, 2 ) int -> rdi "Inlining Arg"
-; V18 tmp16 [V18,T08] ( 3, 1.50) byref -> rsi "field V04._reference (fldOffset=0x0)" P-INDEP
-; V19 tmp17 [V19,T10] ( 3, 1.50) int -> rdx "field V04._length (fldOffset=0x8)" P-INDEP
-;* V20 tmp18 [V20 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V22 tmp20 [V22,T12] ( 2, 1 ) byref -> rsi single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V23 tmp21 [V23,T14] ( 2, 1 ) int -> rdi "field V08._length (fldOffset=0x8)" P-INDEP
-;* V24 tmp22 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp23 [V25 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V26 tmp24 [V26,T09] ( 3, 1.50) byref -> rcx "field V12._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp25 [V27,T11] ( 3, 1.50) int -> rax "field V12._length (fldOffset=0x8)" P-INDEP
-; V28 tmp26 [V28,T13] ( 2, 1 ) byref -> rcx single-def "field V14._reference (fldOffset=0x0)" P-INDEP
-; V29 tmp27 [V29,T15] ( 2, 1 ) int -> rdi "field V14._length (fldOffset=0x8)" P-INDEP
-;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-;* V31 tmp29 [V31 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
+; V16 tmp14 [V16,T15] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V17 tmp15 [V17,T19] ( 2, 2 ) int -> rdx "Inlining Arg"
+;* V18 tmp16 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V19 tmp17 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V20 tmp18 [V20,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V21 tmp19 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V22 tmp20 [V22 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inline stloc first use temp"
+;* V23 tmp21 [V23 ] ( 0, 0 ) byref -> zero-ref
+;* V24 tmp22 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V25 tmp23 [V25,T16] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V26 tmp24 [V26,T20] ( 2, 2 ) int -> rdi "Inlining Arg"
+;* V27 tmp25 [V27,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V28 tmp26 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V29 tmp27 [V29 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inline stloc first use temp"
+;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref
+;* V31 tmp29 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V32 tmp30 [V32,T17] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V33 tmp31 [V33,T21] ( 2, 2 ) int -> rdx "Inlining Arg"
+;* V34 tmp32 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V35 tmp33 [V35 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V36 tmp34 [V36 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+; V37 tmp35 [V37,T09] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+;* V38 tmp36 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V39 tmp37 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V40 tmp38 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
+;* V41 tmp39 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V42 tmp40 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+; V43 tmp41 [V43,T10] ( 4, 2 ) ubyte -> rax "Inline return value spill temp"
+;* V44 tmp42 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V45 tmp43 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+; V46 tmp44 [V46,T07] ( 4, 2 ) byref -> rsi "field V04._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp45 [V47,T11] ( 4, 2 ) int -> rdi "field V04._length (fldOffset=0x8)" P-INDEP
+;* V48 tmp46 [V48 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V49 tmp47 [V49 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
+; V50 tmp48 [V50,T22] ( 2, 1 ) byref -> rsi single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V51 tmp49 [V51,T26] ( 2, 1 ) int -> rdi "field V08._length (fldOffset=0x8)" P-INDEP
+;* V52 tmp50 [V52 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V53 tmp51 [V53 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
+; V54 tmp52 [V54,T08] ( 4, 2 ) byref -> rax "field V12._reference (fldOffset=0x0)" P-INDEP
+; V55 tmp53 [V55,T12] ( 4, 2 ) int -> rdx "field V12._length (fldOffset=0x8)" P-INDEP
+; V56 tmp54 [V56,T23] ( 2, 1 ) byref -> rax single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+; V57 tmp55 [V57,T27] ( 2, 1 ) int -> rdx "field V14._length (fldOffset=0x8)" P-INDEP
+;* V58 tmp56 [V58 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+;* V59 tmp57 [V59 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
+; V60 tmp58 [V60,T05] ( 6, 3 ) byref -> rcx "field V18._reference (fldOffset=0x0)" P-INDEP
+; V61 tmp59 [V61,T13] ( 4, 2 ) int -> r8 "field V18._length (fldOffset=0x8)" P-INDEP
+; V62 tmp60 [V62,T06] ( 6, 3 ) byref -> r9 "field V19._reference (fldOffset=0x0)" P-INDEP
+; V63 tmp61 [V63,T02] ( 10, 5 ) int -> r10 "field V19._length (fldOffset=0x8)" P-INDEP
+;* V64 tmp62 [V64 ] ( 0, 0 ) byref -> zero-ref single-def "field V21._reference (fldOffset=0x0)" P-INDEP
+;* V65 tmp63 [V65 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
+; V66 tmp64 [V66,T24] ( 2, 1 ) byref -> rcx single-def "field V24._reference (fldOffset=0x0)" P-INDEP
+; V67 tmp65 [V67,T28] ( 2, 1 ) int -> r8 "field V24._length (fldOffset=0x8)" P-INDEP
+;* V68 tmp66 [V68 ] ( 0, 0 ) byref -> zero-ref single-def "field V28._reference (fldOffset=0x0)" P-INDEP
+;* V69 tmp67 [V69 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
+; V70 tmp68 [V70,T25] ( 2, 1 ) byref -> r9 single-def "field V31._reference (fldOffset=0x0)" P-INDEP
+; V71 tmp69 [V71,T29] ( 2, 1 ) int -> r10 "field V31._length (fldOffset=0x8)" P-INDEP
+;* V72 tmp70 [V72 ] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
+;* V73 tmp71 [V73 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
+;* V74 tmp72 [V74 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP
+;* V75 tmp73 [V75 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP
+;* V76 tmp74 [V76 ] ( 0, 0 ) byref -> zero-ref single-def "field V38._reference (fldOffset=0x0)" P-INDEP
+;* V77 tmp75 [V77 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
+;* V78 tmp76 [V78 ] ( 0, 0 ) byref -> zero-ref single-def "field V39._reference (fldOffset=0x0)" P-INDEP
+;* V79 tmp77 [V79 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
+;* V80 tmp78 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "field V41._reference (fldOffset=0x0)" P-INDEP
+;* V81 tmp79 [V81 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
+;* V82 tmp80 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V83 tmp81 [V83 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M47132_IG01:
push rbp
push r15
push rbx
lea rbp, [rsp+0x10]
mov rbx, rdi
mov r15, rsi
;; size=15 bbWeight=1 PerfScore 4.00
G_M47132_IG02:
mov rdi, gword ptr [rbx+0x20]
mov rsi, gword ptr [r15+0x20]
mov edx, 5
mov rax, 0xD1FFAB1E ; code for System.String:Equals(System.String,System.String,int):ubyte
call [rax]System.String:Equals(System.String,System.String,int):ubyte
test eax, eax
- je SHORT G_M47132_IG09
- ;; size=29 bbWeight=1 PerfScore 8.75
+ je G_M47132_IG15
+ ;; size=33 bbWeight=1 PerfScore 8.75
G_M47132_IG03:
mov rdi, gword ptr [rbx+0x18]
test rdi, rdi
je SHORT G_M47132_IG04
lea rsi, bword ptr [rdi+0x0C]
mov edi, dword ptr [rdi+0x08]
- mov edx, edi
jmp SHORT G_M47132_IG05
- ;; size=20 bbWeight=0.50 PerfScore 4.00
+ ;; size=18 bbWeight=0.50 PerfScore 3.88
G_M47132_IG04:
xor rsi, rsi
- xor edx, edx
+ xor edi, edi
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M47132_IG05:
- mov rdi, gword ptr [r15+0x18]
- test rdi, rdi
+ mov rdx, gword ptr [r15+0x18]
+ test rdx, rdx
je SHORT G_M47132_IG06
- lea rcx, bword ptr [rdi+0x0C]
- mov edi, dword ptr [rdi+0x08]
- mov eax, edi
+ lea rax, bword ptr [rdx+0x0C]
+ mov edx, dword ptr [rdx+0x08]
jmp SHORT G_M47132_IG07
- ;; size=20 bbWeight=0.50 PerfScore 4.00
+ ;; size=18 bbWeight=0.50 PerfScore 3.88
G_M47132_IG06:
- xor rcx, rcx
- xor eax, eax
+ xor rax, rax
+ xor edx, edx
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M47132_IG07:
- mov rdi, rsi
- mov esi, edx
- mov rdx, rcx
- mov ecx, eax
- mov rax, 0xD1FFAB1E ; code for System.Net.CookieComparer:EqualDomains(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):ubyte
- call [rax]System.Net.CookieComparer:EqualDomains(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):ubyte
- test eax, eax
+ mov rcx, rsi
+ mov r8d, edi
+ mov r9, rax
+ mov r10d, edx
+ test r8d, r8d
+ je SHORT G_M47132_IG08
+ cmp word ptr [rcx], 46
+ jne SHORT G_M47132_IG08
+ add rsi, 2
+ dec edi
+ mov rcx, rsi
+ mov r8d, edi
+ ;; size=35 bbWeight=0.50 PerfScore 3.62
+G_M47132_IG08:
+ test r10d, r10d
je SHORT G_M47132_IG09
+ cmp word ptr [r9], 46
+ jne SHORT G_M47132_IG09
+ add rax, 2
+ dec edx
+ mov r9, rax
+ mov r10d, edx
+ ;; size=24 bbWeight=0.50 PerfScore 3.12
+G_M47132_IG09:
+ cmp r8d, r10d
+ jne SHORT G_M47132_IG15
+ test r10d, r10d
+ je SHORT G_M47132_IG13
+ cmp r10d, 8
+ jl SHORT G_M47132_IG11
+ cmp r10d, 16
+ jge SHORT G_M47132_IG10
+ mov rdi, rcx
+ mov rsi, r9
+ mov edx, r10d
+ mov rax, 0xD1FFAB1E ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte
+ call [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte
+ jmp SHORT G_M47132_IG12
+ ;; size=45 bbWeight=0.50 PerfScore 5.50
+G_M47132_IG10:
+ mov rdi, rcx
+ mov rsi, r9
+ mov edx, r10d
+ mov rax, 0xD1FFAB1E ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector256`1[ushort]](byref,byref,int):ubyte
+ call [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector256`1[ushort]](byref,byref,int):ubyte
+ jmp SHORT G_M47132_IG12
+ ;; size=23 bbWeight=0.50 PerfScore 3.00
+G_M47132_IG11:
+ mov rdi, rcx
+ mov rsi, r9
+ mov edx, r10d
+ mov rax, 0xD1FFAB1E ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Scalar(byref,byref,int):ubyte
+ call [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Scalar(byref,byref,int):ubyte
+ ;; size=21 bbWeight=0.50 PerfScore 2.00
+G_M47132_IG12:
+ test eax, eax
+ je SHORT G_M47132_IG15
+ ;; size=4 bbWeight=0.50 PerfScore 0.62
+G_M47132_IG13:
mov rdi, gword ptr [rbx+0x28]
mov rsi, gword ptr [r15+0x28]
mov edx, 4
mov rax, 0xD1FFAB1E ; code for System.String:Equals(System.String,System.String,int):ubyte
call [rax]System.String:Equals(System.String,System.String,int):ubyte
nop
- ;; size=52 bbWeight=0.50 PerfScore 6.62
-G_M47132_IG08:
+ ;; size=26 bbWeight=0.50 PerfScore 3.88
+G_M47132_IG14:
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M47132_IG09:
+G_M47132_IG15:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M47132_IG10:
+G_M47132_IG16:
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 156, prolog size 9, PerfScore 30.50, instruction count 54, allocated bytes for code 156 (MethodHash=629147e3) for method System.Net.CookieComparer:Equals(System.Net.Cookie,System.Net.Cookie):ubyte (FullOpts)
+; Total bytes of code 282, prolog size 9, PerfScore 45.38, instruction count 91, allocated bytes for code 282 (MethodHash=629147e3) for method System.Net.CookieComparer:Equals(System.Net.Cookie,System.Net.Cookie):ubyte (FullOpts)
26 (8.02 % of base) - System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this
; Assembly listing for method System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):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; 1 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T10] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Buffers.SharedArrayPoolPartitions>
-; V01 arg1 [V01,T08] ( 3, 4 ) ref -> [rbp-0x38] class-hnd single-def <System.Array>
-; V02 loc0 [V02,T09] ( 3, 6 ) ref -> [rbp-0x40] class-hnd exact spill-single-def <System.Buffers.SharedArrayPoolPartitions+Partition[]>
-; V03 loc1 [V03,T01] ( 7, 23 ) int -> rbx
-; V04 loc2 [V04,T05] ( 4, 13 ) int -> r15
+; V00 this [V00,T11] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Buffers.SharedArrayPoolPartitions>
+; V01 arg1 [V01,T09] ( 3, 4 ) ref -> rbx class-hnd single-def <System.Array>
+; V02 loc0 [V02,T10] ( 3, 6 ) ref -> r15 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+; V03 loc1 [V03,T01] ( 7, 23 ) int -> r14
+; V04 loc2 [V04,T05] ( 4, 13 ) int -> r13
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T02] ( 2, 16 ) int -> rbx "dup spill"
+; V06 tmp1 [V06,T02] ( 2, 16 ) int -> r14 "dup spill"
;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V08 tmp3 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V09 tmp4 [V09,T07] ( 3, 10 ) ubyte -> [rbp-0x2C] "Inline stloc first use temp"
-; V10 tmp5 [V10,T00] ( 8, 56 ) ref -> r12 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-; V11 tmp6 [V11,T06] ( 3, 10 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
-; V12 tmp7 [V12,T03] ( 5, 14 ) int -> [rbp-0x30] spill-single-def "Inline stloc first use temp"
-; V13 cse0 [V13,T04] ( 5, 14 ) int -> r13 "CSE #01: aggressive"
-; V14 rat0 [V14,T11] ( 2, 4 ) int -> rbx "Spilling to split statement for tree"
+; V08 tmp3 [V08,T15] ( 3, 2 ) int -> r14 "Inline return value spill temp"
+; V09 tmp4 [V09,T08] ( 4, 7 ) int -> r14 "dup spill"
+;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V12 tmp7 [V12,T07] ( 3, 10 ) ubyte -> [rbp-0x2C] "Inline stloc first use temp"
+; V13 tmp8 [V13,T00] ( 8, 56 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V14 tmp9 [V14,T06] ( 3, 10 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
+; V15 tmp10 [V15,T03] ( 5, 14 ) int -> [rbp-0x30] spill-single-def "Inline stloc first use temp"
+; V16 cse0 [V16,T14] ( 3, 3 ) long -> rax "CSE #01: moderate"
+; V17 cse1 [V17,T04] ( 5, 14 ) int -> r12 "CSE #02: aggressive"
+; V18 rat0 [V18,T12] ( 2, 4 ) long -> rax "TLS field access"
+; V19 rat1 [V19,T13] ( 2, 4 ) long -> rax "TLS access"
;
; Lcl frame size = 24
G_M28192_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-0x38], rsi
- ;; size=26 bbWeight=1 PerfScore 8.75
+ mov rbx, rsi
+ ;; size=22 bbWeight=1 PerfScore 7.00
G_M28192_IG02:
mov r15, gword ptr [rdi+0x08]
- mov gword ptr [rbp-0x40], r15
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=18 bbWeight=1 PerfScore 3.25
+ call rax
+ add rax, 76
+ mov r14d, dword ptr [rax+0x10]
+ lea ecx, [r14-0x01]
+ mov dword ptr [rax+0x10], ecx
+ movzx rax, r14w
+ test eax, eax
+ je SHORT G_M28192_IG04
+ ;; size=49 bbWeight=1 PerfScore 10.75
G_M28192_IG03:
- call rax ; Interop+Sys:SchedGetCpu():int
- mov ebx, eax
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- jne G_M28192_IG16
- ;; size=23 bbWeight=1 PerfScore 7.50
+ sar r14d, 16
+ jmp SHORT G_M28192_IG05
+ ;; size=6 bbWeight=0.50 PerfScore 1.25
G_M28192_IG04:
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov r14d, eax
+ ;; size=15 bbWeight=0.50 PerfScore 1.75
+G_M28192_IG05:
mov rax, 0xD1FFAB1E ; global ptr
test byte ptr [rax], 1
- je G_M28192_IG17
+ je G_M28192_IG19
;; size=19 bbWeight=1 PerfScore 4.25
-G_M28192_IG05:
+G_M28192_IG06:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
- mov eax, ebx
+ mov eax, r14d
xor edx, edx
div edx:eax, dword ptr [rdi]
- mov ebx, edx
- xor r15d, r15d
- mov r14, gword ptr [rbp-0x40]
- mov r13d, dword ptr [r14+0x08]
- test r13d, r13d
- jle G_M28192_IG12
- ;; size=38 bbWeight=1 PerfScore 30.50
-G_M28192_IG06:
- cmp ebx, r13d
- jae G_M28192_IG18
- mov edi, ebx
- mov r12, gword ptr [r14+8*rdi+0x10]
- cmp byte ptr [r12], r12b
- xor eax, eax
- mov dword ptr [rbp-0x2C], eax
- mov rdi, r12
- call System.Threading.Monitor:Enter(System.Object)
- mov rdi, gword ptr [r12+0x08]
- mov eax, dword ptr [r12+0x10]
- mov dword ptr [rbp-0x30], eax
- cmp dword ptr [rdi+0x08], eax
- jbe SHORT G_M28192_IG09
- ;; size=51 bbWeight=4 PerfScore 72.00
+ mov r14d, edx
+ xor r13d, r13d
+ mov r12d, dword ptr [r15+0x08]
+ test r12d, r12d
+ jle G_M28192_IG15
+ ;; size=36 bbWeight=1 PerfScore 29.50
G_M28192_IG07:
- test eax, eax
- jne SHORT G_M28192_IG08
- xor esi, esi
- mov dword ptr [r12+0x14], esi
- ;; size=11 bbWeight=2 PerfScore 5.00
+ cmp r14d, r12d
+ jae G_M28192_IG20
+ mov edi, r14d
+ mov rax, gword ptr [r15+8*rdi+0x10]
+ mov gword ptr [rbp-0x38], rax
+ cmp byte ptr [rax], al
+ xor ecx, ecx
+ mov dword ptr [rbp-0x2C], ecx
+ mov rdi, rax
+ call System.Threading.Monitor:Enter(System.Object)
+ mov rax, gword ptr [rbp-0x38]
+ mov rdi, gword ptr [rax+0x08]
+ mov ecx, dword ptr [rax+0x10]
+ mov dword ptr [rbp-0x30], ecx
+ cmp dword ptr [rdi+0x08], ecx
+ jbe SHORT G_M28192_IG10
+ ;; size=55 bbWeight=4 PerfScore 80.00
G_M28192_IG08:
- movsxd rsi, eax
+ test ecx, ecx
+ jne SHORT G_M28192_IG11
+ xor esi, esi
+ mov dword ptr [rax+0x14], esi
+ ;; size=9 bbWeight=2 PerfScore 5.00
+G_M28192_IG09:
+ movsxd rsi, ecx
lea rdi, bword ptr [rdi+8*rsi+0x10]
- mov rsi, gword ptr [rbp-0x38]
+ mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov edi, dword ptr [rbp-0x30]
inc edi
- mov dword ptr [r12+0x10], edi
+ mov rax, gword ptr [rbp-0x38]
+ mov dword ptr [rax+0x10], edi
mov dword ptr [rbp-0x2C], 1
- ;; size=34 bbWeight=2 PerfScore 13.00
-G_M28192_IG09:
- mov rdi, r12
+ ;; size=35 bbWeight=2 PerfScore 13.50
+G_M28192_IG10:
+ mov rdi, rax
call System.Threading.Monitor:Exit(System.Object)
cmp dword ptr [rbp-0x2C], 0
- jne SHORT G_M28192_IG14
- inc ebx
- cmp r13d, ebx
- jne SHORT G_M28192_IG11
- ;; size=21 bbWeight=4 PerfScore 23.00
-G_M28192_IG10:
- xor ebx, ebx
- ;; size=2 bbWeight=2 PerfScore 0.50
+ je SHORT G_M28192_IG12
+ jmp SHORT G_M28192_IG17
+ ;; size=16 bbWeight=4 PerfScore 25.00
G_M28192_IG11:
- inc r15d
- cmp r13d, r15d
- jg SHORT G_M28192_IG06
- ;; size=8 bbWeight=4 PerfScore 6.00
+ jmp SHORT G_M28192_IG09
+ ;; size=2 bbWeight=1 PerfScore 2.00
G_M28192_IG12:
+ inc r14d
+ cmp r12d, r14d
+ jne SHORT G_M28192_IG14
+ ;; size=8 bbWeight=4 PerfScore 6.00
+G_M28192_IG13:
+ xor r14d, r14d
+ ;; size=3 bbWeight=2 PerfScore 0.50
+G_M28192_IG14:
+ inc r13d
+ cmp r12d, r13d
+ jg G_M28192_IG07
+ ;; size=12 bbWeight=4 PerfScore 6.00
+G_M28192_IG15:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M28192_IG13:
+G_M28192_IG16:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M28192_IG14:
+G_M28192_IG17:
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M28192_IG15:
+G_M28192_IG18:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M28192_IG16:
- call CORINFO_HELP_POLL_GC
- jmp G_M28192_IG04
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M28192_IG17:
+G_M28192_IG19:
mov rdi, 0xD1FFAB1E ; System.Buffers.SharedArrayPoolStatics
call CORINFO_HELP_GET_NONGCSTATIC_BASE
- jmp G_M28192_IG05
+ jmp G_M28192_IG06
;; size=20 bbWeight=0 PerfScore 0.00
-G_M28192_IG18:
+G_M28192_IG20:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 324, prolog size 26, PerfScore 178.25, instruction count 93, allocated bytes for code 324 (MethodHash=5f5691df) for method System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (FullOpts)
+; Total bytes of code 350, prolog size 22, PerfScore 197.00, instruction count 102, allocated bytes for code 350 (MethodHash=5f5691df) for method System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (FullOpts)
26 (59.09 % of base) - System.Threading.Thread:GetCurrentProcessorId():int
; Assembly listing for method System.Threading.Thread:GetCurrentProcessorId():int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rsp based frame
-; partially interruptible
+; fully interruptible
; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V01 tmp1 [V01,T04] ( 2, 1 ) int -> rax "Inline return value spill temp"
+; V02 tmp2 [V02,T00] ( 4, 7 ) int -> rcx "dup spill"
+;* V03 tmp3 [V03 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V04 cse0 [V04,T03] ( 3, 3 ) long -> rax "CSE #01: aggressive"
+; V05 rat0 [V05,T01] ( 2, 4 ) long -> rax "TLS field access"
+; V06 rat1 [V06,T02] ( 2, 4 ) long -> rax "TLS access"
;
; Lcl frame size = 8
G_M31145_IG01:
push rax
- vzeroupper
- ;; size=4 bbWeight=1 PerfScore 2.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M31145_IG02:
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- jne SHORT G_M31145_IG06
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M31145_IG03:
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=10 bbWeight=1 PerfScore 0.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_M31145_IG05
+ ;; size=42 bbWeight=1 PerfScore 8.75
+G_M31145_IG03:
+ mov eax, ecx
+ sar eax, 16
+ ;; size=5 bbWeight=0.50 PerfScore 0.38
G_M31145_IG04:
- call rax ; Interop+Sys:SchedGetCpu():int
- nop
- ;; size=3 bbWeight=1 PerfScore 3.25
-G_M31145_IG05:
add rsp, 8
ret
- ;; size=5 bbWeight=1 PerfScore 1.25
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M31145_IG05:
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ ;; size=10 bbWeight=0.50 PerfScore 0.12
G_M31145_IG06:
- call CORINFO_HELP_POLL_GC
- jmp SHORT G_M31145_IG03
- ;; size=7 bbWeight=0 PerfScore 0.00
+ add rsp, 8
+ tail.jmp [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 44, prolog size 4, PerfScore 11.00, instruction count 12, allocated bytes for code 44 (MethodHash=d4fe8656) for method System.Threading.Thread:GetCurrentProcessorId():int (FullOpts)
+; Total bytes of code 70, prolog size 1, PerfScore 12.00, instruction count 18, allocated bytes for code 70 (MethodHash=d4fe8656) for method System.Threading.Thread:GetCurrentProcessorId():int (FullOpts)
20 (1.07 % of base) - System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this
; Assembly listing for method System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],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; 12 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T09] ( 8, 5 ) ref -> [rbp-0x50] this class-hnd single-def <System.Buffers.SharedArrayPool`1[ubyte]>
-; V01 arg1 [V01,T08] ( 8, 6 ) ref -> [rbp-0x58] class-hnd single-def <ubyte[]>
+; V00 this [V00,T09] ( 8, 5 ) ref -> r15 this class-hnd single-def <System.Buffers.SharedArrayPool`1[ubyte]>
+; V01 arg1 [V01,T08] ( 8, 6 ) ref -> rbx class-hnd single-def <ubyte[]>
; V02 arg2 [V02,T14] ( 3, 2.50) ubyte -> r14 single-def
; V03 loc0 [V03,T12] ( 8, 5 ) int -> r12
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V05 loc2 [V05,T23] ( 4, 2.50) ubyte -> [rbp-0x2C]
-; V06 loc3 [V06,T25] ( 3, 2 ) ubyte -> [rbp-0x30]
-; V07 loc4 [V07,T20] ( 4, 3 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V08 loc5 [V08,T21] ( 3, 3 ) ref -> [rbp-0x60] class-hnd spill-single-def <System.Array>
+; V05 loc2 [V05,T24] ( 4, 2.50) ubyte -> [rbp-0x2C]
+; V06 loc3 [V06,T26] ( 3, 2 ) ubyte -> [rbp-0x30]
+; V07 loc4 [V07,T21] ( 4, 3 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
+; V08 loc5 [V08,T22] ( 3, 3 ) ref -> [rbp-0x58] class-hnd spill-single-def <System.Array>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T19] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V11 tmp2 [V11,T16] ( 5, 4 ) ref -> [rbp-0x68]
-; V12 tmp3 [V12,T27] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
-; V13 tmp4 [V13,T28] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
-; V14 tmp5 [V14,T29] ( 2, 2 ) int -> rbx "impAppendStmt"
-; V15 tmp6 [V15,T30] ( 2, 2 ) int -> r13 "impAppendStmt"
+; V10 tmp1 [V10,T20] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V11 tmp2 [V11,T16] ( 5, 4 ) ref -> [rbp-0x60]
+; V12 tmp3 [V12,T28] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
+; V13 tmp4 [V13,T29] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
+; V14 tmp5 [V14,T30] ( 2, 2 ) int -> rbx "impAppendStmt"
+; V15 tmp6 [V15,T31] ( 2, 2 ) int -> r13 "impAppendStmt"
;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
-; V19 tmp10 [V19,T36] ( 2, 1 ) int -> rcx
+; V19 tmp10 [V19,T40] ( 2, 1 ) int -> rcx
;* V20 tmp11 [V20 ] ( 0, 0 ) ref -> zero-ref single-def
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
-; V24 tmp15 [V24,T33] ( 3, 1.50) int -> r8
+; V24 tmp15 [V24,T35] ( 3, 1.50) int -> r8
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref single-def
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) ref -> zero-ref single-def
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp26 [V35,T34] ( 3, 1.50) int -> r9
+; V35 tmp26 [V35,T36] ( 3, 1.50) int -> r9
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V37 tmp28 [V37,T17] ( 4, 4 ) byref -> r14 single-def "dup spill"
;* V38 tmp29 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.SharedArrayPoolThreadLocalArray>
-; V39 tmp30 [V39,T26] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
-; V40 tmp31 [V40,T24] ( 4, 2 ) ref -> rax
-; V41 tmp32 [V41,T39] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V39 tmp30 [V39,T27] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V40 tmp31 [V40,T25] ( 4, 2 ) ref -> rax
+; V41 tmp32 [V41,T43] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V45 tmp36 [V45,T35] ( 3, 1.50) ubyte -> rdx "Inline return value spill temp"
-; V46 tmp37 [V46,T13] ( 3, 5 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
-; V47 tmp38 [V47,T01] ( 7, 22.50) int -> rbx "Inline stloc first use temp"
-; V48 tmp39 [V48,T05] ( 4, 12.50) int -> r15 "Inline stloc first use temp"
-; V49 tmp40 [V49,T02] ( 2, 16 ) int -> rbx "dup spill"
+; V45 tmp36 [V45,T37] ( 3, 1.50) ubyte -> rdx "Inline return value spill temp"
+; V46 tmp37 [V46,T13] ( 3, 5 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+; V47 tmp38 [V47,T01] ( 7, 22.50) int -> [rbp-0x3C] "Inline stloc first use temp"
+; V48 tmp39 [V48,T05] ( 4, 12.50) int -> [rbp-0x40] "Inline stloc first use temp"
+; V49 tmp40 [V49,T02] ( 2, 16 ) int -> rax "dup spill"
;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V51 tmp42 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp43 [V52,T07] ( 3, 10 ) ubyte -> [rbp-0x3C] "Inline stloc first use temp"
-; V53 tmp44 [V53,T00] ( 8, 56 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-; V54 tmp45 [V54,T06] ( 3, 10 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
-; V55 tmp46 [V55,T03] ( 5, 14 ) int -> [rbp-0x40] spill-single-def "Inline stloc first use temp"
-; V56 tmp47 [V56,T31] ( 2, 2 ) int -> r8 "Inlining Arg"
-;* V57 tmp48 [V57,T37] ( 0, 0 ) ref -> zero-ref single-def "field V38.Array (fldOffset=0x0)" P-INDEP
-;* V58 tmp49 [V58,T38] ( 0, 0 ) int -> zero-ref "field V38.MillisecondsTimeStamp (fldOffset=0x8)" P-INDEP
-; V59 tmp50 [V59,T22] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V60 tmp51 [V60,T40] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V61 tmp52 [V61,T41] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V62 cse0 [V62,T04] ( 5, 13 ) int -> [rbp-0x44] spill-single-def "CSE #04: aggressive"
-; V63 cse1 [V63,T15] ( 6, 4 ) int -> r13 "CSE #01: moderate"
-; V64 rat0 [V64,T32] ( 2, 2 ) int -> rbx "Spilling to split statement for tree"
-; V65 rat1 [V65,T18] ( 3, 4 ) byref -> rax "TLS field access"
-; V66 rat2 [V66,T11] ( 3, 6 ) long -> rax "TLS access"
-; V67 rat3 [V67,T10] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V51 tmp42 [V51,T38] ( 3, 1.50) int -> [rbp-0x44] "Inline return value spill temp"
+; V52 tmp43 [V52,T18] ( 4, 4 ) int -> rcx "dup spill"
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V54 tmp45 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V55 tmp46 [V55,T07] ( 3, 10 ) ubyte -> [rbp-0x48] "Inline stloc first use temp"
+; V56 tmp47 [V56,T00] ( 8, 56 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V57 tmp48 [V57,T06] ( 3, 10 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
+; V58 tmp49 [V58,T03] ( 5, 14 ) int -> [rbp-0x4C] spill-single-def "Inline stloc first use temp"
+; V59 tmp50 [V59,T32] ( 2, 2 ) int -> r8 "Inlining Arg"
+;* V60 tmp51 [V60,T41] ( 0, 0 ) ref -> zero-ref single-def "field V38.Array (fldOffset=0x0)" P-INDEP
+;* V61 tmp52 [V61,T42] ( 0, 0 ) int -> zero-ref "field V38.MillisecondsTimeStamp (fldOffset=0x8)" P-INDEP
+; V62 tmp53 [V62,T23] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V63 tmp54 [V63,T44] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
+; V64 tmp55 [V64,T45] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V65 cse0 [V65,T39] ( 3, 1.50) long -> rax "CSE #04: moderate"
+; V66 cse1 [V66,T04] ( 5, 13 ) int -> [rbp-0x50] spill-single-def "CSE #05: aggressive"
+; V67 cse2 [V67,T15] ( 6, 4 ) int -> r13 "CSE #01: moderate"
+; V68 rat0 [V68,T19] ( 3, 4 ) byref -> rax "TLS field access"
+; V69 rat1 [V69,T11] ( 3, 6 ) long -> rax "TLS access"
+; V70 rat2 [V70,T10] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V71 rat3 [V71,T33] ( 2, 2 ) long -> rax "TLS field access"
+; V72 rat4 [V72,T34] ( 2, 2 ) long -> rax "TLS access"
;
-; Lcl frame size = 88
+; Lcl frame size = 72
G_M60175_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 88
- vzeroupper
- lea rbp, [rsp+0x80]
+ sub rsp, 72
+ lea rbp, [rsp+0x70]
mov r15, rdi
mov rbx, rsi
mov r14d, edx
- ;; size=34 bbWeight=1 PerfScore 8.50
+ ;; size=28 bbWeight=1 PerfScore 7.50
G_M60175_IG02:
test rbx, rbx
- je G_M60175_IG35
+ je G_M60175_IG34
mov r13d, dword ptr [rbx+0x08]
lea edi, [r13-0x01]
or edi, 15
xor r12d, r12d
lzcnt r12d, edi
xor r12d, 31
add r12d, -3
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 10
jle G_M60175_IG31
mov rdi, gword ptr [rax+0x08]
mov rax, bword ptr [rdi+0x50]
test rax, rax
je G_M60175_IG31
;; size=84 bbWeight=1 PerfScore 19.50
G_M60175_IG03:
mov rax, gword ptr [rax+0x10]
test rax, rax
jne SHORT G_M60175_IG05
;; size=9 bbWeight=1 PerfScore 3.25
G_M60175_IG04:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ubyte]:InitializeTlsBucketsAndTrimming():System.Buffers.SharedArrayPoolThreadLocalArray[]:this
call [rax]System.Buffers.SharedArrayPool`1[ubyte]:InitializeTlsBucketsAndTrimming():System.Buffers.SharedArrayPoolThreadLocalArray[]:this
;; size=15 bbWeight=0.50 PerfScore 1.75
G_M60175_IG05:
xor ecx, ecx
mov dword ptr [rbp-0x30], 1
- mov gword ptr [rbp-0x68], rax
+ mov gword ptr [rbp-0x60], rax
cmp dword ptr [rax+0x08], r12d
jbe G_M60175_IG25
;; size=23 bbWeight=1 PerfScore 6.25
G_M60175_IG06:
mov dword ptr [rbp-0x2C], 1
test r14b, r14b
je SHORT G_M60175_IG07
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; code for System.Array:Clear(System.Array)
call [rsi]System.Array:Clear(System.Array)
;; size=27 bbWeight=0.50 PerfScore 2.88
G_M60175_IG07:
mov edi, 16
shlx edi, edi, r12d
cmp r13d, edi
- jne G_M60175_IG34
+ jne G_M60175_IG33
mov edi, r12d
shl rdi, 4
- mov rax, gword ptr [rbp-0x68]
+ mov rax, gword ptr [rbp-0x60]
lea r14, bword ptr [rax+rdi+0x10]
mov rax, gword ptr [r14]
- mov gword ptr [rbp-0x60], rax
- mov gword ptr [rbp-0x58], rbx
+ mov gword ptr [rbp-0x58], rax
mov rdi, r14
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
xor edi, edi
mov dword ptr [r14+0x08], edi
- cmp gword ptr [rbp-0x60], 0
- mov rbx, gword ptr [rbp-0x58]
- je SHORT G_M60175_IG11
+ mov r14, gword ptr [rbp-0x58]
+ test r14, r14
+ je SHORT G_M60175_IG09
mov rdi, gword ptr [r15+0x10]
cmp r12d, dword ptr [rdi+0x08]
- jae G_M60175_IG36
+ jae G_M60175_IG35
mov esi, r12d
mov rax, gword ptr [rdi+8*rsi+0x10]
test rax, rax
- jne SHORT G_M60175_IG10
- mov gword ptr [rbp-0x50], r15
+ jne SHORT G_M60175_IG08
mov rdi, r15
mov esi, r12d
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ubyte]:CreatePerCorePartitions(int):System.Buffers.SharedArrayPoolPartitions:this
call [rax]System.Buffers.SharedArrayPool`1[ubyte]:CreatePerCorePartitions(int):System.Buffers.SharedArrayPoolPartitions:this
- mov gword ptr [rbp-0x58], rbx
- ;; size=127 bbWeight=0.50 PerfScore 15.38
+ ;; size=113 bbWeight=0.50 PerfScore 13.00
G_M60175_IG08:
mov rax, gword ptr [rax+0x08]
- mov gword ptr [rbp-0x70], rax
+ mov gword ptr [rbp-0x68], rax
+ mov rdi, 0xD1FFAB1E
mov rcx, 0xD1FFAB1E ; function address
- ;; size=18 bbWeight=0.50 PerfScore 1.62
+ call rcx
+ 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
+ jne SHORT G_M60175_IG10
+ jmp SHORT G_M60175_IG11
+ ;; size=52 bbWeight=0.50 PerfScore 6.88
G_M60175_IG09:
- call rcx ; Interop+Sys:SchedGetCpu():int
- mov ebx, eax
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- je SHORT G_M60175_IG12
- jmp G_M60175_IG32
- ;; size=24 bbWeight=0.50 PerfScore 4.75
-G_M60175_IG10:
- mov gword ptr [rbp-0x58], rbx
- mov gword ptr [rbp-0x50], r15
- jmp SHORT G_M60175_IG08
- ;; size=10 bbWeight=0.25 PerfScore 1.00
-G_M60175_IG11:
mov ecx, dword ptr [rbp-0x2C]
jmp G_M60175_IG25
;; size=8 bbWeight=0.25 PerfScore 0.75
+G_M60175_IG10:
+ mov eax, ecx
+ sar eax, 16
+ mov edx, eax
+ jmp SHORT G_M60175_IG12
+ ;; size=9 bbWeight=0.50 PerfScore 1.50
+G_M60175_IG11:
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov edx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
G_M60175_IG12:
mov rax, 0xD1FFAB1E ; global ptr
test byte ptr [rax], 1
- je G_M60175_IG33
+ je G_M60175_IG32
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M60175_IG13:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
- mov eax, ebx
+ mov eax, edx
xor edx, edx
div edx:eax, dword ptr [rdi]
- mov ebx, edx
- xor r15d, r15d
- mov r14, gword ptr [rbp-0x70]
- mov eax, dword ptr [r14+0x08]
- mov dword ptr [rbp-0x44], eax
- test eax, eax
+ mov eax, edx
+ xor ecx, ecx
+ mov dword ptr [rbp-0x40], ecx
+ mov rdx, gword ptr [rbp-0x68]
+ mov esi, dword ptr [rdx+0x08]
+ mov dword ptr [rbp-0x50], esi
+ test esi, esi
jle G_M60175_IG22
- ;; size=40 bbWeight=0.50 PerfScore 15.75
+ ;; size=41 bbWeight=0.50 PerfScore 16.25
G_M60175_IG14:
- cmp ebx, eax
- jae G_M60175_IG36
- mov edi, ebx
- mov rcx, gword ptr [r14+8*rdi+0x10]
- mov gword ptr [rbp-0x78], rcx
- cmp byte ptr [rcx], cl
- xor edx, edx
- mov dword ptr [rbp-0x3C], edx
- mov rdi, rcx
+ cmp eax, esi
+ jae G_M60175_IG35
+ mov dword ptr [rbp-0x3C], eax
+ mov edi, eax
+ mov r8, gword ptr [rdx+8*rdi+0x10]
+ mov gword ptr [rbp-0x70], r8
+ cmp byte ptr [r8], r8b
+ xor r9d, r9d
+ mov dword ptr [rbp-0x48], r9d
+ mov rdi, r8
call System.Threading.Monitor:Enter(System.Object)
- mov rax, gword ptr [rbp-0x78]
+ mov rax, gword ptr [rbp-0x70]
mov rdi, gword ptr [rax+0x08]
mov ecx, dword ptr [rax+0x10]
- mov dword ptr [rbp-0x40], ecx
+ mov dword ptr [rbp-0x4C], ecx
cmp dword ptr [rdi+0x08], ecx
jbe SHORT G_M60175_IG17
- ;; size=53 bbWeight=4 PerfScore 80.00
+ ;; size=59 bbWeight=4 PerfScore 84.00
G_M60175_IG15:
test ecx, ecx
jne SHORT G_M60175_IG18
xor esi, esi
mov dword ptr [rax+0x14], esi
;; size=9 bbWeight=2 PerfScore 5.00
G_M60175_IG16:
movsxd rsi, ecx
lea rdi, bword ptr [rdi+8*rsi+0x10]
- mov rsi, gword ptr [rbp-0x60]
+ mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- mov edi, dword ptr [rbp-0x40]
+ mov edi, dword ptr [rbp-0x4C]
inc edi
- mov rax, gword ptr [rbp-0x78]
+ mov rax, gword ptr [rbp-0x70]
mov dword ptr [rax+0x10], edi
- mov dword ptr [rbp-0x3C], 1
- ;; size=36 bbWeight=2 PerfScore 15.00
+ mov dword ptr [rbp-0x48], 1
+ ;; size=35 bbWeight=2 PerfScore 13.50
G_M60175_IG17:
mov rdi, rax
call System.Threading.Monitor:Exit(System.Object)
- cmp dword ptr [rbp-0x3C], 0
+ cmp dword ptr [rbp-0x48], 0
je SHORT G_M60175_IG19
jmp SHORT G_M60175_IG23
;; size=16 bbWeight=4 PerfScore 25.00
G_M60175_IG18:
jmp SHORT G_M60175_IG16
;; size=2 bbWeight=1 PerfScore 2.00
G_M60175_IG19:
- inc ebx
- mov edi, dword ptr [rbp-0x44]
- cmp edi, ebx
+ mov eax, dword ptr [rbp-0x3C]
+ inc eax
+ mov edi, eax
+ mov esi, dword ptr [rbp-0x50]
+ cmp esi, edi
jne SHORT G_M60175_IG21
- ;; size=9 bbWeight=4 PerfScore 10.00
+ ;; size=14 bbWeight=4 PerfScore 15.00
G_M60175_IG20:
- xor ebx, ebx
+ xor edi, edi
;; size=2 bbWeight=2 PerfScore 0.50
G_M60175_IG21:
- inc r15d
- cmp edi, r15d
+ mov ecx, dword ptr [rbp-0x40]
+ inc ecx
+ cmp esi, ecx
+ mov dword ptr [rbp-0x40], ecx
mov eax, edi
+ mov rdx, gword ptr [rbp-0x68]
jg G_M60175_IG14
- ;; size=14 bbWeight=4 PerfScore 7.00
+ ;; size=22 bbWeight=4 PerfScore 19.00
G_M60175_IG22:
xor edx, edx
jmp SHORT G_M60175_IG24
;; size=4 bbWeight=0.50 PerfScore 1.12
G_M60175_IG23:
mov edx, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M60175_IG24:
mov dword ptr [rbp-0x30], edx
mov ecx, dword ptr [rbp-0x2C]
- mov rbx, gword ptr [rbp-0x58]
- mov r15, gword ptr [rbp-0x50]
- ;; size=14 bbWeight=0.50 PerfScore 2.00
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
G_M60175_IG25:
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
cmp byte ptr [r14+0x9D], 0
je G_M60175_IG29
;; size=27 bbWeight=1 PerfScore 6.25
G_M60175_IG26:
test r13d, r13d
mov dword ptr [rbp-0x2C], ecx
je G_M60175_IG29
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov dword ptr [rbp-0x34], eax
mov dword ptr [rbp-0x38], r13d
cmp byte ptr [r15], r15b
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov r8d, eax
mov rdi, r14
mov edx, dword ptr [rbp-0x34]
mov ecx, dword ptr [rbp-0x38]
mov esi, 3
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this
call [rax]System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this
mov eax, dword ptr [rbp-0x2C]
test eax, dword ptr [rbp-0x30]
jne SHORT G_M60175_IG29
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ebx, eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
cmp dword ptr [rbp-0x2C], 0
je SHORT G_M60175_IG27
mov r8d, r12d
xor r9d, r9d
jmp SHORT G_M60175_IG28
;; size=109 bbWeight=0.50 PerfScore 14.12
G_M60175_IG27:
mov r8d, -1
mov r9d, 1
;; size=12 bbWeight=0.50 PerfScore 0.25
G_M60175_IG28:
mov rdi, r14
mov esi, ebx
mov edx, r13d
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferDropped(int,int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferDropped(int,int,int,int,int):this
;; size=20 bbWeight=0.50 PerfScore 2.00
G_M60175_IG29:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M60175_IG30:
- add rsp, 88
+ add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M60175_IG31:
mov edi, 10
call CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
jmp G_M60175_IG03
;; size=15 bbWeight=0 PerfScore 0.00
G_M60175_IG32:
- call CORINFO_HELP_POLL_GC
- jmp G_M60175_IG12
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M60175_IG33:
+ mov dword ptr [rbp-0x44], edx
mov rdi, 0xD1FFAB1E ; System.Buffers.SharedArrayPoolStatics
call CORINFO_HELP_GET_NONGCSTATIC_BASE
+ mov edx, dword ptr [rbp-0x44]
jmp G_M60175_IG13
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M60175_IG34:
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M60175_IG33:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_ArgumentException_BufferNotFromPool():System.String
call [rax]System.SR:get_ArgumentException_BufferNotFromPool():System.String
mov r15, rax
mov edi, 987
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
-G_M60175_IG35:
+G_M60175_IG34:
mov edi, 2
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
-G_M60175_IG36:
+G_M60175_IG35:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 938, prolog size 34, PerfScore 258.38, instruction count 240, allocated bytes for code 938 (MethodHash=78a414f0) for method System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this (FullOpts)
+; Total bytes of code 948, prolog size 28, PerfScore 276.75, instruction count 249, allocated bytes for code 948 (MethodHash=78a414f0) for method System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this (FullOpts)
16 (4.03 % of base) - Microsoft.Extensions.Diagnostics.Metrics.DebugConsoleMetricListener:.ctor():this
; Assembly listing for method Microsoft.Extensions.Diagnostics.Metrics.DebugConsoleMetricListener:.ctor():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; 11 single block inlinees; 9 inlinees without PGO data
+; 0 inlinees with PGO data; 12 single block inlinees; 8 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 5, 5 ) ref -> rbx this class-hnd single-def <Microsoft.Extensions.Diagnostics.Metrics.DebugConsoleMetricListener>
+; V00 this [V00,T02] ( 5, 5 ) ref -> [rbp-0x28] this class-hnd single-def <Microsoft.Extensions.Diagnostics.Metrics.DebugConsoleMetricListener>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T01] ( 4, 8 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerCallback>
-; V03 tmp2 [V03,T04] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Timer>
-;* V04 tmp3 [V04,T12] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V05 tmp4 [V05,T15] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V06 tmp5 [V06,T13] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V07 tmp6 [V07,T16] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V08 tmp7 [V08,T00] ( 7, 14 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
-; V09 tmp8 [V09,T05] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
-; V10 tmp9 [V10,T06] ( 3, 6 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-;* V11 tmp10 [V11 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
+; V03 tmp2 [V03,T03] ( 3, 6 ) ref -> [rbp-0x30] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Timer>
+;* V04 tmp3 [V04,T08] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
+;* V05 tmp4 [V05,T11] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V06 tmp5 [V06,T09] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
+;* V07 tmp6 [V07,T12] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V08 tmp7 [V08,T00] ( 7, 14 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+; V09 tmp8 [V09,T04] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
+; V10 tmp9 [V10,T05] ( 3, 6 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+; V11 tmp10 [V11,T07] ( 2, 4 ) long -> rax "impAppendStmt"
;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V13 tmp12 [V13,T11] ( 3, 2 ) int -> rcx "Inline return value spill temp"
-; V14 tmp13 [V14,T03] ( 4, 7 ) int -> rcx "dup spill"
-;* V15 tmp14 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V16 tmp15 [V16 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V17 tmp16 [V17 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V18 tmp17 [V18,T07] ( 3, 6 ) long -> rdx "index expr"
-;* V19 cse0 [V19,T14] ( 0, 0 ) byref -> zero-ref "CSE #03: moderate"
-; V20 cse1 [V20,T10] ( 3, 3 ) long -> rax "CSE #01: moderate"
-; V21 rat0 [V21,T08] ( 2, 4 ) long -> rax "TLS field access"
-; V22 rat1 [V22,T09] ( 2, 4 ) long -> rax "TLS access"
+;* V13 tmp12 [V13 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V14 tmp13 [V14 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V15 tmp14 [V15,T06] ( 3, 6 ) long -> rdx "index expr"
+;* V16 cse0 [V16,T10] ( 0, 0 ) byref -> zero-ref "CSE #02: moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 32
G_M37176_IG01:
push rbp
push r15
push r14
push r13
push rbx
- lea rbp, [rsp+0x20]
+ sub rsp, 32
+ vzeroupper
+ lea rbp, [rsp+0x40]
mov rbx, rdi
- ;; size=16 bbWeight=1 PerfScore 5.75
+ ;; size=23 bbWeight=1 PerfScore 7.00
G_M37176_IG02:
mov rdi, 0xD1FFAB1E ; System.Threading.TimerCallback
call CORINFO_HELP_NEWSFAST
mov r15, rax
test rbx, rbx
- je G_M37176_IG09
+ je G_M37176_IG08
lea rdi, bword ptr [r15+0x08]
+ mov gword ptr [rbp-0x28], rbx
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for Microsoft.Extensions.Diagnostics.Metrics.DebugConsoleMetricListener:OnTimer(System.Object):this
mov qword ptr [r15+0x18], rdi
mov rdi, 0xD1FFAB1E ; System.Threading.Timer
call CORINFO_HELP_NEWSFAST
- mov r14, rax
+ mov gword ptr [rbp-0x30], rax
mov rdi, 0xD1FFAB1E ; System.Threading.TimerQueueTimer
call CORINFO_HELP_NEWSFAST
mov r13, rax
+ mov gword ptr [rbp-0x38], r13
lea rdi, bword ptr [r13+0x20]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
xor rax, rax
mov gword ptr [r13+0x28], rax
mov qword ptr [r13+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 [r13+0x30]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je G_M37176_IG08
- ;; size=158 bbWeight=1 PerfScore 22.00
+ mov rax, 0xD1FFAB1E ; global ptr
+ test byte ptr [rax], 1
+ je G_M37176_IG06
+ ;; size=167 bbWeight=1 PerfScore 24.75
G_M37176_IG03:
- mov rdi, 0xD1FFAB1E ; data for System.Threading.TimerQueue:<Instances>k__BackingField
- mov r15, gword ptr [rdi]
- mov rdi, 0xD1FFAB1E
+ mov rax, 0xD1FFAB1E ; data for System.Threading.TimerQueue:<Instances>k__BackingField
+ mov r15, gword ptr [rax]
+ mov gword ptr [rbp-0x40], r15
mov rax, 0xD1FFAB1E ; function address
- 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_M37176_IG05
- ;; size=55 bbWeight=1 PerfScore 11.00
+ ;; size=27 bbWeight=1 PerfScore 3.50
G_M37176_IG04:
- sar ecx, 16
- jmp SHORT G_M37176_IG06
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M37176_IG05:
- 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_M37176_IG06:
- mov eax, ecx
+ call rax ; Interop+Sys:SchedGetCpu():int
+ mov eax, eax
mov rdx, 0xD1FFAB1E ; data for System.Threading.TimerQueue:<Instances>k__BackingField
mov rdx, gword ptr [rdx]
mov edi, dword ptr [rdx+0x08]
- xor edx, edx
- div rdx:rax, rdi
+ cqo
+ idiv rdx:rax, rdi
+ mov r15, gword ptr [rbp-0x40]
mov edi, dword ptr [r15+0x08]
cmp rdx, rdi
- jae SHORT G_M37176_IG10
+ jae G_M37176_IG09
mov rsi, gword ptr [r15+8*rdx+0x10]
+ mov r13, gword ptr [rbp-0x38]
lea rdi, bword ptr [r13+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; System.Threading.TimerHolder
call CORINFO_HELP_NEWFAST
- mov r15, rax
- lea rdi, bword ptr [r15+0x08]
+ mov rbx, rax
+ lea rdi, bword ptr [rbx+0x08]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
+ mov r14, gword ptr [rbp-0x30]
lea rdi, bword ptr [r14+0x08]
- mov rsi, r15
+ mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
+ mov rbx, gword ptr [rbp-0x28]
lea rdi, bword ptr [rbx+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- nop
- ;; size=101 bbWeight=1 PerfScore 79.50
-G_M37176_IG07:
+ mov rdi, 0xD1FFAB1E ; global ptr
+ cmp dword ptr [rdi], 0
+ jne SHORT G_M37176_IG07
+ ;; size=137 bbWeight=1 PerfScore 97.75
+G_M37176_IG05:
+ add rsp, 32
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 3.50
-G_M37176_IG08:
+ ;; size=13 bbWeight=1 PerfScore 3.75
+G_M37176_IG06:
mov rdi, 0xD1FFAB1E ; System.Threading.TimerQueue
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M37176_IG03
;; size=20 bbWeight=0 PerfScore 0.00
-G_M37176_IG09:
+G_M37176_IG07:
+ call CORINFO_HELP_POLL_GC
+ jmp SHORT G_M37176_IG05
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M37176_IG08:
mov rax, 0xD1FFAB1E ; code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
call [rax]System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M37176_IG10:
+G_M37176_IG09:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 397, prolog size 13, PerfScore 124.75, instruction count 93, allocated bytes for code 397 (MethodHash=cb6b6ec7) for method Microsoft.Extensions.Diagnostics.Metrics.DebugConsoleMetricListener:.ctor():this (FullOpts)
+; Total bytes of code 413, prolog size 20, PerfScore 136.75, instruction count 94, allocated bytes for code 413 (MethodHash=cb6b6ec7) for method Microsoft.Extensions.Diagnostics.Metrics.DebugConsoleMetricListener:.ctor():this (FullOpts)
14 (4.68 % of base) - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this
; Assembly listing for method System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array: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; 1 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T10] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Buffers.SharedArrayPoolPartitions>
+; V00 this [V00,T11] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Buffers.SharedArrayPoolPartitions>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Array>
-; V02 loc1 [V02,T09] ( 3, 6 ) ref -> [rbp-0x30] class-hnd exact spill-single-def <System.Buffers.SharedArrayPoolPartitions+Partition[]>
-; V03 loc2 [V03,T01] ( 7, 23 ) int -> rbx
-; V04 loc3 [V04,T05] ( 4, 13 ) int -> r15
+; V02 loc1 [V02,T10] ( 3, 6 ) ref -> rbx class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+; V03 loc2 [V03,T01] ( 7, 23 ) int -> r15
+; V04 loc3 [V04,T05] ( 4, 13 ) int -> r14
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array>
-; V07 tmp2 [V07,T02] ( 2, 16 ) int -> rbx "dup spill"
+; V07 tmp2 [V07,T02] ( 2, 16 ) int -> r15 "dup spill"
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V10 tmp5 [V10,T07] ( 4, 10.50) ref -> [rbp-0x38] class-hnd "Inline stloc first use temp" <System.Array>
-; V11 tmp6 [V11,T00] ( 7, 52 ) ref -> r12 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-; V12 tmp7 [V12,T06] ( 4, 12 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
-; V13 tmp8 [V13,T03] ( 5, 14 ) int -> rax "Inline stloc first use temp"
-; V14 cse0 [V14,T04] ( 5, 14 ) int -> r13 "CSE #01: moderate"
-; V15 cse1 [V15,T08] ( 2, 8 ) int -> rcx "CSE #02: moderate"
-; V16 rat0 [V16,T11] ( 2, 4 ) int -> rbx "Spilling to split statement for tree"
+; V09 tmp4 [V09,T15] ( 3, 2 ) int -> r15 "Inline return value spill temp"
+; V10 tmp5 [V10,T09] ( 4, 7 ) int -> r15 "dup spill"
+;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
+; V13 tmp8 [V13,T07] ( 4, 10.50) ref -> [rbp-0x30] class-hnd "Inline stloc first use temp" <System.Array>
+; V14 tmp9 [V14,T00] ( 7, 52 ) ref -> r12 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V15 tmp10 [V15,T06] ( 4, 12 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
+; V16 tmp11 [V16,T03] ( 5, 14 ) int -> rax "Inline stloc first use temp"
+; V17 cse0 [V17,T14] ( 3, 3 ) long -> rax "CSE #01: moderate"
+; V18 cse1 [V18,T04] ( 5, 14 ) int -> r13 "CSE #02: moderate"
+; V19 cse2 [V19,T08] ( 2, 8 ) int -> rcx "CSE #03: moderate"
+; V20 rat0 [V20,T12] ( 2, 4 ) long -> rax "TLS field access"
+; V21 rat1 [V21,T13] ( 2, 4 ) long -> rax "TLS access"
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M10734_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- vzeroupper
- lea rbp, [rsp+0x40]
- ;; size=22 bbWeight=1 PerfScore 7.75
+ push rax
+ lea rbp, [rsp+0x30]
+ ;; size=16 bbWeight=1 PerfScore 7.50
G_M10734_IG02:
mov rbx, gword ptr [rdi+0x08]
- mov gword ptr [rbp-0x30], rbx
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=18 bbWeight=1 PerfScore 3.25
+ call rax
+ add rax, 76
+ mov r15d, dword ptr [rax+0x10]
+ lea ecx, [r15-0x01]
+ mov dword ptr [rax+0x10], ecx
+ movzx rax, r15w
+ test eax, eax
+ je SHORT G_M10734_IG04
+ ;; size=49 bbWeight=1 PerfScore 10.75
G_M10734_IG03:
- call rax ; Interop+Sys:SchedGetCpu():int
- mov ebx, eax
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- jne G_M10734_IG15
- ;; size=23 bbWeight=1 PerfScore 7.50
+ sar r15d, 16
+ jmp SHORT G_M10734_IG05
+ ;; size=6 bbWeight=0.50 PerfScore 1.25
G_M10734_IG04:
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov r15d, eax
+ ;; size=15 bbWeight=0.50 PerfScore 1.75
+G_M10734_IG05:
mov rax, 0xD1FFAB1E ; global ptr
test byte ptr [rax], 1
je G_M10734_IG16
;; size=19 bbWeight=1 PerfScore 4.25
-G_M10734_IG05:
+G_M10734_IG06:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
- mov eax, ebx
+ mov eax, r15d
xor edx, edx
div edx:eax, dword ptr [rdi]
- mov ebx, edx
- xor r15d, r15d
- mov r14, gword ptr [rbp-0x30]
- mov r13d, dword ptr [r14+0x08]
+ mov r15d, edx
+ xor r14d, r14d
+ mov r13d, dword ptr [rbx+0x08]
test r13d, r13d
- jle SHORT G_M10734_IG11
- ;; size=34 bbWeight=1 PerfScore 30.50
-G_M10734_IG06:
- cmp ebx, r13d
+ jle SHORT G_M10734_IG12
+ ;; size=32 bbWeight=1 PerfScore 29.50
+G_M10734_IG07:
+ cmp r15d, r13d
jae G_M10734_IG17
- mov edi, ebx
- mov r12, gword ptr [r14+8*rdi+0x10]
+ mov edi, r15d
+ mov r12, gword ptr [rbx+8*rdi+0x10]
cmp byte ptr [r12], r12b
xor rax, rax
- mov gword ptr [rbp-0x38], rax
+ mov gword ptr [rbp-0x30], rax
mov rdi, r12
call System.Threading.Monitor:Enter(System.Object)
mov rdi, gword ptr [r12+0x08]
mov eax, dword ptr [r12+0x10]
dec eax
mov ecx, dword ptr [rdi+0x08]
cmp ecx, eax
- jbe SHORT G_M10734_IG08
- ;; size=53 bbWeight=4 PerfScore 66.00
-G_M10734_IG07:
+ jbe SHORT G_M10734_IG09
+ ;; size=54 bbWeight=4 PerfScore 66.00
+G_M10734_IG08:
mov ecx, eax
mov rcx, gword ptr [rdi+8*rcx+0x10]
- mov gword ptr [rbp-0x38], rcx
+ mov gword ptr [rbp-0x30], rcx
mov edx, eax
xor rsi, rsi
mov gword ptr [rdi+8*rdx+0x10], rsi
mov dword ptr [r12+0x10], eax
;; size=25 bbWeight=2 PerfScore 11.50
-G_M10734_IG08:
+G_M10734_IG09:
mov rdi, r12
call System.Threading.Monitor:Exit(System.Object)
- mov r12, gword ptr [rbp-0x38]
+ mov r12, gword ptr [rbp-0x30]
test r12, r12
- jne SHORT G_M10734_IG13
- inc ebx
- cmp r13d, ebx
- jne SHORT G_M10734_IG10
- ;; size=24 bbWeight=4 PerfScore 20.00
-G_M10734_IG09:
- xor ebx, ebx
- ;; size=2 bbWeight=2 PerfScore 0.50
-G_M10734_IG10:
+ jne SHORT G_M10734_IG14
inc r15d
cmp r13d, r15d
- jg SHORT G_M10734_IG06
- ;; size=8 bbWeight=4 PerfScore 6.00
+ jne SHORT G_M10734_IG11
+ ;; size=25 bbWeight=4 PerfScore 20.00
+G_M10734_IG10:
+ xor r15d, r15d
+ ;; size=3 bbWeight=2 PerfScore 0.50
G_M10734_IG11:
+ inc r14d
+ cmp r13d, r14d
+ jg SHORT G_M10734_IG07
+ ;; size=8 bbWeight=4 PerfScore 6.00
+G_M10734_IG12:
xor rax, rax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M10734_IG12:
- add rsp, 24
+G_M10734_IG13:
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M10734_IG13:
+G_M10734_IG14:
mov rax, r12
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M10734_IG14:
- add rsp, 24
+G_M10734_IG15:
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M10734_IG15:
- call CORINFO_HELP_POLL_GC
- jmp G_M10734_IG04
- ;; size=10 bbWeight=0 PerfScore 0.00
G_M10734_IG16:
mov rdi, 0xD1FFAB1E ; System.Buffers.SharedArrayPoolStatics
call CORINFO_HELP_GET_NONGCSTATIC_BASE
- jmp G_M10734_IG05
+ jmp G_M10734_IG06
;; size=20 bbWeight=0 PerfScore 0.00
G_M10734_IG17:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 299, prolog size 22, PerfScore 161.75, instruction count 89, allocated bytes for code 299 (MethodHash=16ebd611) for method System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (FullOpts)
+; Total bytes of code 313, prolog size 16, PerfScore 163.50, instruction count 93, allocated bytes for code 313 (MethodHash=16ebd611) for method System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (FullOpts)
13 (1.47 % of base) - System.Buffers.SharedArrayPool`1[System.__Canon]:Return(System.__Canon[],ubyte):this
; Assembly listing for method System.Buffers.SharedArrayPool`1[System.__Canon]:Return(System.__Canon[],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; 12 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T09] ( 8, 5.50) ref -> [rbp-0x58] this class-hnd single-def <System.Buffers.SharedArrayPool`1[System.__Canon]>
-; V01 arg1 [V01,T08] ( 8, 6 ) ref -> [rbp-0x60] class-hnd single-def <System.__Canon[]>
+; V00 this [V00,T09] ( 8, 5.50) ref -> r15 this class-hnd single-def <System.Buffers.SharedArrayPool`1[System.__Canon]>
+; V01 arg1 [V01,T08] ( 8, 6 ) ref -> rbx class-hnd single-def <System.__Canon[]>
; V02 arg2 [V02,T12] ( 3, 2.50) ubyte -> r14 single-def
; V03 loc0 [V03,T10] ( 8, 5 ) int -> r12
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V05 loc2 [V05,T20] ( 4, 2.50) ubyte -> [rbp-0x34]
-; V06 loc3 [V06,T22] ( 3, 2 ) ubyte -> [rbp-0x38]
-; V07 loc4 [V07,T17] ( 4, 3 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V08 loc5 [V08,T18] ( 3, 3 ) ref -> [rbp-0x68] class-hnd spill-single-def <System.Array>
+; V05 loc2 [V05,T21] ( 4, 2.50) ubyte -> [rbp-0x34]
+; V06 loc3 [V06,T23] ( 3, 2 ) ubyte -> [rbp-0x38]
+; V07 loc4 [V07,T18] ( 4, 3 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
+; V08 loc5 [V08,T19] ( 3, 3 ) ref -> [rbp-0x60] class-hnd spill-single-def <System.Array>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T16] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V11 tmp2 [V11,T14] ( 5, 4 ) ref -> [rbp-0x70]
-; V12 tmp3 [V12,T24] ( 2, 2 ) int -> [rbp-0x3C] spill-single-def "impAppendStmt"
-; V13 tmp4 [V13,T25] ( 2, 2 ) int -> [rbp-0x40] spill-single-def "impAppendStmt"
-; V14 tmp5 [V14,T26] ( 2, 2 ) int -> rbx "impAppendStmt"
-; V15 tmp6 [V15,T27] ( 2, 2 ) int -> r13 "impAppendStmt"
+; V10 tmp1 [V10,T17] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V11 tmp2 [V11,T14] ( 5, 4 ) ref -> [rbp-0x68]
+; V12 tmp3 [V12,T25] ( 2, 2 ) int -> [rbp-0x3C] spill-single-def "impAppendStmt"
+; V13 tmp4 [V13,T26] ( 2, 2 ) int -> [rbp-0x40] spill-single-def "impAppendStmt"
+; V14 tmp5 [V14,T27] ( 2, 2 ) int -> rbx "impAppendStmt"
+; V15 tmp6 [V15,T28] ( 2, 2 ) int -> r13 "impAppendStmt"
;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
-; V19 tmp10 [V19,T33] ( 2, 1 ) int -> rcx
+; V19 tmp10 [V19,T37] ( 2, 1 ) int -> rcx
;* V20 tmp11 [V20 ] ( 0, 0 ) ref -> zero-ref single-def
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
-; V24 tmp15 [V24,T30] ( 3, 1.50) int -> r8
+; V24 tmp15 [V24,T32] ( 3, 1.50) int -> r8
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref single-def
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) ref -> zero-ref single-def
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp26 [V35,T31] ( 3, 1.50) int -> r9
+; V35 tmp26 [V35,T33] ( 3, 1.50) int -> r9
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V37 tmp28 [V37,T15] ( 4, 4 ) byref -> r14 single-def "dup spill"
;* V38 tmp29 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.SharedArrayPoolThreadLocalArray>
-; V39 tmp30 [V39,T23] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
-; V40 tmp31 [V40,T21] ( 4, 2 ) ref -> rax
-; V41 tmp32 [V41,T36] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V39 tmp30 [V39,T24] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V40 tmp31 [V40,T22] ( 4, 2 ) ref -> rax
+; V41 tmp32 [V41,T40] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V45 tmp36 [V45,T32] ( 3, 1.50) ubyte -> rdx "Inline return value spill temp"
-; V46 tmp37 [V46,T11] ( 3, 5 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
-; V47 tmp38 [V47,T01] ( 7, 22.50) int -> rbx "Inline stloc first use temp"
-; V48 tmp39 [V48,T05] ( 4, 12.50) int -> r15 "Inline stloc first use temp"
-; V49 tmp40 [V49,T02] ( 2, 16 ) int -> rbx "dup spill"
+; V45 tmp36 [V45,T34] ( 3, 1.50) ubyte -> rdx "Inline return value spill temp"
+; V46 tmp37 [V46,T11] ( 3, 5 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+; V47 tmp38 [V47,T01] ( 7, 22.50) int -> [rbp-0x44] "Inline stloc first use temp"
+; V48 tmp39 [V48,T05] ( 4, 12.50) int -> [rbp-0x48] "Inline stloc first use temp"
+; V49 tmp40 [V49,T02] ( 2, 16 ) int -> rax "dup spill"
;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V51 tmp42 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp43 [V52,T07] ( 3, 10 ) ubyte -> [rbp-0x44] "Inline stloc first use temp"
-; V53 tmp44 [V53,T00] ( 8, 56 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-; V54 tmp45 [V54,T06] ( 3, 10 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
-; V55 tmp46 [V55,T03] ( 5, 14 ) int -> [rbp-0x48] spill-single-def "Inline stloc first use temp"
-; V56 tmp47 [V56,T28] ( 2, 2 ) int -> r8 "Inlining Arg"
-;* V57 tmp48 [V57,T34] ( 0, 0 ) ref -> zero-ref single-def "field V38.Array (fldOffset=0x0)" P-INDEP
-;* V58 tmp49 [V58,T35] ( 0, 0 ) int -> zero-ref "field V38.MillisecondsTimeStamp (fldOffset=0x8)" P-INDEP
-; V59 tmp50 [V59,T19] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V60 tmp51 [V60,T37] ( 2, 0 ) ref -> r14 single-def "argument with side effect"
-; V61 tmp52 [V61,T38] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V62 cse0 [V62,T04] ( 5, 13 ) int -> [rbp-0x4C] spill-single-def "CSE #04: aggressive"
-; V63 cse1 [V63,T13] ( 6, 4 ) int -> r13 "CSE #01: moderate"
-; V64 rat0 [V64,T29] ( 2, 2 ) int -> rbx "Spilling to split statement for tree"
+; V51 tmp42 [V51,T35] ( 3, 1.50) int -> [rbp-0x4C] "Inline return value spill temp"
+; V52 tmp43 [V52,T16] ( 4, 4 ) int -> rcx "dup spill"
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V54 tmp45 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V55 tmp46 [V55,T07] ( 3, 10 ) ubyte -> [rbp-0x50] "Inline stloc first use temp"
+; V56 tmp47 [V56,T00] ( 8, 56 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V57 tmp48 [V57,T06] ( 3, 10 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
+; V58 tmp49 [V58,T03] ( 5, 14 ) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp"
+; V59 tmp50 [V59,T29] ( 2, 2 ) int -> r8 "Inlining Arg"
+;* V60 tmp51 [V60,T38] ( 0, 0 ) ref -> zero-ref single-def "field V38.Array (fldOffset=0x0)" P-INDEP
+;* V61 tmp52 [V61,T39] ( 0, 0 ) int -> zero-ref "field V38.MillisecondsTimeStamp (fldOffset=0x8)" P-INDEP
+; V62 tmp53 [V62,T20] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V63 tmp54 [V63,T41] ( 2, 0 ) ref -> r14 single-def "argument with side effect"
+; V64 tmp55 [V64,T42] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V65 cse0 [V65,T36] ( 3, 1.50) long -> rax "CSE #04: moderate"
+; V66 cse1 [V66,T04] ( 5, 13 ) int -> [rbp-0x58] spill-single-def "CSE #05: aggressive"
+; V67 cse2 [V67,T13] ( 6, 4 ) int -> r13 "CSE #01: moderate"
+; V68 rat0 [V68,T30] ( 2, 2 ) long -> rax "TLS field access"
+; V69 rat1 [V69,T31] ( 2, 2 ) long -> rax "TLS access"
;
; Lcl frame size = 88
G_M26159_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 88
- vzeroupper
lea rbp, [rsp+0x80]
mov qword ptr [rbp-0x30], rdi
mov r15, rdi
mov rbx, rsi
mov r14d, edx
- ;; size=38 bbWeight=1 PerfScore 9.50
+ ;; size=35 bbWeight=1 PerfScore 8.50
G_M26159_IG02:
test rbx, rbx
- je G_M26159_IG33
+ je G_M26159_IG32
mov r13d, dword ptr [rbx+0x08]
lea edi, [r13-0x01]
or edi, 15
xor r12d, r12d
lzcnt r12d, edi
xor r12d, 31
add r12d, -3
mov rdi, qword ptr [r15]
call CORINFO_HELP_GET_GCTHREADSTATIC_BASE
mov rax, gword ptr [rax+0x10]
test rax, rax
jne SHORT G_M26159_IG04
;; size=53 bbWeight=1 PerfScore 13.00
G_M26159_IG03:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[System.__Canon]:InitializeTlsBucketsAndTrimming():System.Buffers.SharedArrayPoolThreadLocalArray[]:this
call [rax]System.Buffers.SharedArrayPool`1[System.__Canon]:InitializeTlsBucketsAndTrimming():System.Buffers.SharedArrayPoolThreadLocalArray[]:this
;; size=15 bbWeight=0.50 PerfScore 1.75
G_M26159_IG04:
xor ecx, ecx
mov dword ptr [rbp-0x38], 1
- mov gword ptr [rbp-0x70], rax
+ mov gword ptr [rbp-0x68], rax
cmp dword ptr [rax+0x08], r12d
jbe G_M26159_IG24
;; size=23 bbWeight=1 PerfScore 6.25
G_M26159_IG05:
mov dword ptr [rbp-0x34], 1
test r14b, r14b
je SHORT G_M26159_IG06
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; code for System.Array:Clear(System.Array)
call [rsi]System.Array:Clear(System.Array)
;; size=27 bbWeight=0.50 PerfScore 2.88
G_M26159_IG06:
mov edi, 16
shlx edi, edi, r12d
cmp r13d, edi
- jne G_M26159_IG32
+ jne G_M26159_IG31
mov edi, r12d
shl rdi, 4
- mov rax, gword ptr [rbp-0x70]
+ mov rax, gword ptr [rbp-0x68]
lea r14, bword ptr [rax+rdi+0x10]
mov rax, gword ptr [r14]
- mov gword ptr [rbp-0x68], rax
- mov gword ptr [rbp-0x60], rbx
+ mov gword ptr [rbp-0x60], rax
mov rdi, r14
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
xor edi, edi
mov dword ptr [r14+0x08], edi
- cmp gword ptr [rbp-0x68], 0
- mov rbx, gword ptr [rbp-0x60]
- je SHORT G_M26159_IG10
+ mov r14, gword ptr [rbp-0x60]
+ test r14, r14
+ je SHORT G_M26159_IG08
mov rdi, gword ptr [r15+0x10]
cmp r12d, dword ptr [rdi+0x08]
- jae G_M26159_IG34
+ jae G_M26159_IG33
mov esi, r12d
mov rax, gword ptr [rdi+8*rsi+0x10]
test rax, rax
- jne SHORT G_M26159_IG09
- mov gword ptr [rbp-0x58], r15
+ jne SHORT G_M26159_IG07
mov rdi, r15
mov esi, r12d
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[System.__Canon]:CreatePerCorePartitions(int):System.Buffers.SharedArrayPoolPartitions:this
call [rax]System.Buffers.SharedArrayPool`1[System.__Canon]:CreatePerCorePartitions(int):System.Buffers.SharedArrayPoolPartitions:this
- mov gword ptr [rbp-0x60], rbx
- ;; size=127 bbWeight=0.50 PerfScore 15.38
+ ;; size=113 bbWeight=0.50 PerfScore 13.00
G_M26159_IG07:
mov rax, gword ptr [rax+0x08]
- mov gword ptr [rbp-0x78], rax
+ mov gword ptr [rbp-0x70], rax
+ mov rdi, 0xD1FFAB1E
mov rcx, 0xD1FFAB1E ; function address
- ;; size=18 bbWeight=0.50 PerfScore 1.62
+ call rcx
+ 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
+ jne SHORT G_M26159_IG09
+ jmp SHORT G_M26159_IG10
+ ;; size=52 bbWeight=0.50 PerfScore 6.88
G_M26159_IG08:
- call rcx ; Interop+Sys:SchedGetCpu():int
- mov ebx, eax
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- je SHORT G_M26159_IG11
- jmp G_M26159_IG30
- ;; size=24 bbWeight=0.50 PerfScore 4.75
-G_M26159_IG09:
- mov gword ptr [rbp-0x60], rbx
- mov gword ptr [rbp-0x58], r15
- jmp SHORT G_M26159_IG07
- ;; size=10 bbWeight=0.25 PerfScore 1.00
-G_M26159_IG10:
mov ecx, dword ptr [rbp-0x34]
jmp G_M26159_IG24
;; size=8 bbWeight=0.25 PerfScore 0.75
+G_M26159_IG09:
+ mov eax, ecx
+ sar eax, 16
+ mov edx, eax
+ jmp SHORT G_M26159_IG11
+ ;; size=9 bbWeight=0.50 PerfScore 1.50
+G_M26159_IG10:
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov edx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
G_M26159_IG11:
mov rax, 0xD1FFAB1E ; global ptr
test byte ptr [rax], 1
- je G_M26159_IG31
+ je G_M26159_IG30
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M26159_IG12:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
- mov eax, ebx
+ mov eax, edx
xor edx, edx
div edx:eax, dword ptr [rdi]
- mov ebx, edx
- xor r15d, r15d
- mov r14, gword ptr [rbp-0x78]
- mov eax, dword ptr [r14+0x08]
- mov dword ptr [rbp-0x4C], eax
- test eax, eax
+ mov eax, edx
+ xor ecx, ecx
+ mov dword ptr [rbp-0x48], ecx
+ mov rdx, gword ptr [rbp-0x70]
+ mov esi, dword ptr [rdx+0x08]
+ mov dword ptr [rbp-0x58], esi
+ test esi, esi
jle G_M26159_IG21
- ;; size=40 bbWeight=0.50 PerfScore 15.75
+ ;; size=41 bbWeight=0.50 PerfScore 16.25
G_M26159_IG13:
- cmp ebx, eax
- jae G_M26159_IG34
- mov edi, ebx
- mov rcx, gword ptr [r14+8*rdi+0x10]
- mov gword ptr [rbp-0x80], rcx
- cmp byte ptr [rcx], cl
- xor edx, edx
- mov dword ptr [rbp-0x44], edx
- mov rdi, rcx
+ cmp eax, esi
+ jae G_M26159_IG33
+ mov dword ptr [rbp-0x44], eax
+ mov edi, eax
+ mov r8, gword ptr [rdx+8*rdi+0x10]
+ mov gword ptr [rbp-0x78], r8
+ cmp byte ptr [r8], r8b
+ xor r9d, r9d
+ mov dword ptr [rbp-0x50], r9d
+ mov rdi, r8
call System.Threading.Monitor:Enter(System.Object)
- mov rax, gword ptr [rbp-0x80]
+ mov rax, gword ptr [rbp-0x78]
mov rdi, gword ptr [rax+0x08]
mov ecx, dword ptr [rax+0x10]
- mov dword ptr [rbp-0x48], ecx
+ mov dword ptr [rbp-0x54], ecx
cmp dword ptr [rdi+0x08], ecx
jbe SHORT G_M26159_IG16
- ;; size=53 bbWeight=4 PerfScore 80.00
+ ;; size=59 bbWeight=4 PerfScore 84.00
G_M26159_IG14:
test ecx, ecx
jne SHORT G_M26159_IG17
xor esi, esi
mov dword ptr [rax+0x14], esi
;; size=9 bbWeight=2 PerfScore 5.00
G_M26159_IG15:
movsxd rsi, ecx
lea rdi, bword ptr [rdi+8*rsi+0x10]
- mov rsi, gword ptr [rbp-0x68]
+ mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- mov edi, dword ptr [rbp-0x48]
+ mov edi, dword ptr [rbp-0x54]
inc edi
- mov rax, gword ptr [rbp-0x80]
+ mov rax, gword ptr [rbp-0x78]
mov dword ptr [rax+0x10], edi
- mov dword ptr [rbp-0x44], 1
- ;; size=36 bbWeight=2 PerfScore 15.00
+ mov dword ptr [rbp-0x50], 1
+ ;; size=35 bbWeight=2 PerfScore 13.50
G_M26159_IG16:
mov rdi, rax
call System.Threading.Monitor:Exit(System.Object)
- cmp dword ptr [rbp-0x44], 0
+ cmp dword ptr [rbp-0x50], 0
je SHORT G_M26159_IG18
jmp SHORT G_M26159_IG22
;; size=16 bbWeight=4 PerfScore 25.00
G_M26159_IG17:
jmp SHORT G_M26159_IG15
;; size=2 bbWeight=1 PerfScore 2.00
G_M26159_IG18:
- inc ebx
- mov edi, dword ptr [rbp-0x4C]
- cmp edi, ebx
+ mov eax, dword ptr [rbp-0x44]
+ inc eax
+ mov edi, eax
+ mov esi, dword ptr [rbp-0x58]
+ cmp esi, edi
jne SHORT G_M26159_IG20
- ;; size=9 bbWeight=4 PerfScore 10.00
+ ;; size=14 bbWeight=4 PerfScore 15.00
G_M26159_IG19:
- xor ebx, ebx
+ xor edi, edi
;; size=2 bbWeight=2 PerfScore 0.50
G_M26159_IG20:
- inc r15d
- cmp edi, r15d
+ mov ecx, dword ptr [rbp-0x48]
+ inc ecx
+ cmp esi, ecx
+ mov dword ptr [rbp-0x48], ecx
mov eax, edi
+ mov rdx, gword ptr [rbp-0x70]
jg G_M26159_IG13
- ;; size=14 bbWeight=4 PerfScore 7.00
+ ;; size=22 bbWeight=4 PerfScore 19.00
G_M26159_IG21:
xor edx, edx
jmp SHORT G_M26159_IG23
;; size=4 bbWeight=0.50 PerfScore 1.12
G_M26159_IG22:
mov edx, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M26159_IG23:
mov dword ptr [rbp-0x38], edx
mov ecx, dword ptr [rbp-0x34]
- mov rbx, gword ptr [rbp-0x60]
- mov r15, gword ptr [rbp-0x58]
- ;; size=14 bbWeight=0.50 PerfScore 2.00
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
G_M26159_IG24:
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
cmp byte ptr [r14+0x9D], 0
je G_M26159_IG28
;; size=27 bbWeight=1 PerfScore 6.25
G_M26159_IG25:
test r13d, r13d
mov dword ptr [rbp-0x34], ecx
je G_M26159_IG28
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov dword ptr [rbp-0x3C], eax
mov dword ptr [rbp-0x40], r13d
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov r8d, eax
mov rdi, r14
mov edx, dword ptr [rbp-0x3C]
mov ecx, dword ptr [rbp-0x40]
mov esi, 3
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this
call [rax]System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this
mov eax, dword ptr [rbp-0x34]
test eax, dword ptr [rbp-0x38]
jne SHORT G_M26159_IG28
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ebx, eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
cmp dword ptr [rbp-0x34], 0
je SHORT G_M26159_IG26
mov r8d, r12d
xor r9d, r9d
jmp SHORT G_M26159_IG27
;; size=106 bbWeight=0.50 PerfScore 12.62
G_M26159_IG26:
mov r8d, -1
mov r9d, 1
;; size=12 bbWeight=0.50 PerfScore 0.25
G_M26159_IG27:
mov rdi, r14
mov esi, ebx
mov edx, r13d
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferDropped(int,int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferDropped(int,int,int,int,int):this
;; size=20 bbWeight=0.50 PerfScore 2.00
G_M26159_IG28:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M26159_IG29:
add rsp, 88
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M26159_IG30:
- call CORINFO_HELP_POLL_GC
- jmp G_M26159_IG11
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M26159_IG31:
+ mov dword ptr [rbp-0x4C], edx
mov rdi, 0xD1FFAB1E ; System.Buffers.SharedArrayPoolStatics
call CORINFO_HELP_GET_NONGCSTATIC_BASE
+ mov edx, dword ptr [rbp-0x4C]
jmp G_M26159_IG12
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M26159_IG32:
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M26159_IG31:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_ArgumentException_BufferNotFromPool():System.String
call [rax]System.SR:get_ArgumentException_BufferNotFromPool():System.String
mov r14, rax
mov edi, 987
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r14
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
-G_M26159_IG33:
+G_M26159_IG32:
mov edi, 2
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
-G_M26159_IG34:
+G_M26159_IG33:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 884, prolog size 38, PerfScore 248.12, instruction count 230, allocated bytes for code 884 (MethodHash=d01d99d0) for method System.Buffers.SharedArrayPool`1[System.__Canon]:Return(System.__Canon[],ubyte):this (FullOpts)
+; Total bytes of code 897, prolog size 35, PerfScore 266.50, instruction count 239, allocated bytes for code 897 (MethodHash=d01d99d0) for method System.Buffers.SharedArrayPool`1[System.__Canon]:Return(System.__Canon[],ubyte):this (FullOpts)
10 (1.07 % of base) - System.Buffers.SharedArrayPool`1[double]:Return(double[],ubyte):this
; Assembly listing for method System.Buffers.SharedArrayPool`1[double]:Return(double[],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; 12 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T09] ( 8, 5 ) ref -> [rbp-0x50] this class-hnd single-def <System.Buffers.SharedArrayPool`1[double]>
-; V01 arg1 [V01,T08] ( 8, 6 ) ref -> [rbp-0x58] class-hnd single-def <double[]>
+; V00 this [V00,T09] ( 8, 5 ) ref -> r15 this class-hnd single-def <System.Buffers.SharedArrayPool`1[double]>
+; V01 arg1 [V01,T08] ( 8, 6 ) ref -> rbx class-hnd single-def <double[]>
; V02 arg2 [V02,T14] ( 3, 2.50) ubyte -> r14 single-def
; V03 loc0 [V03,T12] ( 8, 5 ) int -> r12
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V05 loc2 [V05,T23] ( 4, 2.50) ubyte -> [rbp-0x2C]
-; V06 loc3 [V06,T25] ( 3, 2 ) ubyte -> [rbp-0x30]
-; V07 loc4 [V07,T20] ( 4, 3 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V08 loc5 [V08,T21] ( 3, 3 ) ref -> [rbp-0x60] class-hnd spill-single-def <System.Array>
+; V05 loc2 [V05,T24] ( 4, 2.50) ubyte -> [rbp-0x2C]
+; V06 loc3 [V06,T26] ( 3, 2 ) ubyte -> [rbp-0x30]
+; V07 loc4 [V07,T21] ( 4, 3 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
+; V08 loc5 [V08,T22] ( 3, 3 ) ref -> [rbp-0x58] class-hnd spill-single-def <System.Array>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T19] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V11 tmp2 [V11,T16] ( 5, 4 ) ref -> [rbp-0x68]
-; V12 tmp3 [V12,T27] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
-; V13 tmp4 [V13,T28] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
-; V14 tmp5 [V14,T29] ( 2, 2 ) int -> rbx "impAppendStmt"
-; V15 tmp6 [V15,T30] ( 2, 2 ) int -> r13 "impAppendStmt"
+; V10 tmp1 [V10,T20] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V11 tmp2 [V11,T16] ( 5, 4 ) ref -> [rbp-0x60]
+; V12 tmp3 [V12,T28] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
+; V13 tmp4 [V13,T29] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
+; V14 tmp5 [V14,T30] ( 2, 2 ) int -> rbx "impAppendStmt"
+; V15 tmp6 [V15,T31] ( 2, 2 ) int -> r13 "impAppendStmt"
;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
-; V19 tmp10 [V19,T36] ( 2, 1 ) int -> rcx
+; V19 tmp10 [V19,T40] ( 2, 1 ) int -> rcx
;* V20 tmp11 [V20 ] ( 0, 0 ) ref -> zero-ref single-def
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
-; V24 tmp15 [V24,T33] ( 3, 1.50) int -> r8
+; V24 tmp15 [V24,T35] ( 3, 1.50) int -> r8
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref single-def
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) ref -> zero-ref single-def
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp26 [V35,T34] ( 3, 1.50) int -> r9
+; V35 tmp26 [V35,T36] ( 3, 1.50) int -> r9
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V37 tmp28 [V37,T17] ( 4, 4 ) byref -> r14 single-def "dup spill"
;* V38 tmp29 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.SharedArrayPoolThreadLocalArray>
-; V39 tmp30 [V39,T26] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
-; V40 tmp31 [V40,T24] ( 4, 2 ) ref -> rax
-; V41 tmp32 [V41,T39] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V39 tmp30 [V39,T27] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V40 tmp31 [V40,T25] ( 4, 2 ) ref -> rax
+; V41 tmp32 [V41,T43] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V45 tmp36 [V45,T35] ( 3, 1.50) ubyte -> rdx "Inline return value spill temp"
-; V46 tmp37 [V46,T13] ( 3, 5 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
-; V47 tmp38 [V47,T01] ( 7, 22.50) int -> rbx "Inline stloc first use temp"
-; V48 tmp39 [V48,T05] ( 4, 12.50) int -> r15 "Inline stloc first use temp"
-; V49 tmp40 [V49,T02] ( 2, 16 ) int -> rbx "dup spill"
+; V45 tmp36 [V45,T37] ( 3, 1.50) ubyte -> rdx "Inline return value spill temp"
+; V46 tmp37 [V46,T13] ( 3, 5 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+; V47 tmp38 [V47,T01] ( 7, 22.50) int -> [rbp-0x3C] "Inline stloc first use temp"
+; V48 tmp39 [V48,T05] ( 4, 12.50) int -> [rbp-0x40] "Inline stloc first use temp"
+; V49 tmp40 [V49,T02] ( 2, 16 ) int -> rax "dup spill"
;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V51 tmp42 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp43 [V52,T07] ( 3, 10 ) ubyte -> [rbp-0x3C] "Inline stloc first use temp"
-; V53 tmp44 [V53,T00] ( 8, 56 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-; V54 tmp45 [V54,T06] ( 3, 10 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
-; V55 tmp46 [V55,T03] ( 5, 14 ) int -> [rbp-0x40] spill-single-def "Inline stloc first use temp"
-; V56 tmp47 [V56,T31] ( 2, 2 ) int -> r8 "Inlining Arg"
-;* V57 tmp48 [V57,T37] ( 0, 0 ) ref -> zero-ref single-def "field V38.Array (fldOffset=0x0)" P-INDEP
-;* V58 tmp49 [V58,T38] ( 0, 0 ) int -> zero-ref "field V38.MillisecondsTimeStamp (fldOffset=0x8)" P-INDEP
-; V59 tmp50 [V59,T22] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V60 tmp51 [V60,T40] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V61 tmp52 [V61,T41] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V62 cse0 [V62,T04] ( 5, 13 ) int -> [rbp-0x44] spill-single-def "CSE #04: aggressive"
-; V63 cse1 [V63,T15] ( 6, 4 ) int -> r13 "CSE #01: moderate"
-; V64 rat0 [V64,T32] ( 2, 2 ) int -> rbx "Spilling to split statement for tree"
-; V65 rat1 [V65,T18] ( 3, 4 ) byref -> rax "TLS field access"
-; V66 rat2 [V66,T11] ( 3, 6 ) long -> rax "TLS access"
-; V67 rat3 [V67,T10] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V51 tmp42 [V51,T38] ( 3, 1.50) int -> [rbp-0x44] "Inline return value spill temp"
+; V52 tmp43 [V52,T18] ( 4, 4 ) int -> rcx "dup spill"
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V54 tmp45 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V55 tmp46 [V55,T07] ( 3, 10 ) ubyte -> [rbp-0x48] "Inline stloc first use temp"
+; V56 tmp47 [V56,T00] ( 8, 56 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V57 tmp48 [V57,T06] ( 3, 10 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
+; V58 tmp49 [V58,T03] ( 5, 14 ) int -> [rbp-0x4C] spill-single-def "Inline stloc first use temp"
+; V59 tmp50 [V59,T32] ( 2, 2 ) int -> r8 "Inlining Arg"
+;* V60 tmp51 [V60,T41] ( 0, 0 ) ref -> zero-ref single-def "field V38.Array (fldOffset=0x0)" P-INDEP
+;* V61 tmp52 [V61,T42] ( 0, 0 ) int -> zero-ref "field V38.MillisecondsTimeStamp (fldOffset=0x8)" P-INDEP
+; V62 tmp53 [V62,T23] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V63 tmp54 [V63,T44] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
+; V64 tmp55 [V64,T45] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V65 cse0 [V65,T39] ( 3, 1.50) long -> rax "CSE #04: moderate"
+; V66 cse1 [V66,T04] ( 5, 13 ) int -> [rbp-0x50] spill-single-def "CSE #05: aggressive"
+; V67 cse2 [V67,T15] ( 6, 4 ) int -> r13 "CSE #01: moderate"
+; V68 rat0 [V68,T19] ( 3, 4 ) byref -> rax "TLS field access"
+; V69 rat1 [V69,T11] ( 3, 6 ) long -> rax "TLS access"
+; V70 rat2 [V70,T10] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V71 rat3 [V71,T33] ( 2, 2 ) long -> rax "TLS field access"
+; V72 rat4 [V72,T34] ( 2, 2 ) long -> rax "TLS access"
;
-; Lcl frame size = 88
+; Lcl frame size = 72
G_M46671_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 88
- vzeroupper
- lea rbp, [rsp+0x80]
+ sub rsp, 72
+ lea rbp, [rsp+0x70]
mov r15, rdi
mov rbx, rsi
mov r14d, edx
- ;; size=34 bbWeight=1 PerfScore 8.50
+ ;; size=28 bbWeight=1 PerfScore 7.50
G_M46671_IG02:
test rbx, rbx
- je G_M46671_IG35
+ je G_M46671_IG34
mov r13d, dword ptr [rbx+0x08]
lea edi, [r13-0x01]
or edi, 15
xor r12d, r12d
lzcnt r12d, edi
xor r12d, 31
add r12d, -3
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 14
jle G_M46671_IG31
mov rdi, gword ptr [rax+0x08]
mov rax, bword ptr [rdi+0x70]
test rax, rax
je G_M46671_IG31
;; size=84 bbWeight=1 PerfScore 19.50
G_M46671_IG03:
mov rax, gword ptr [rax+0x10]
test rax, rax
jne SHORT G_M46671_IG05
;; size=9 bbWeight=1 PerfScore 3.25
G_M46671_IG04:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[double]:InitializeTlsBucketsAndTrimming():System.Buffers.SharedArrayPoolThreadLocalArray[]:this
call [rax]System.Buffers.SharedArrayPool`1[double]:InitializeTlsBucketsAndTrimming():System.Buffers.SharedArrayPoolThreadLocalArray[]:this
;; size=15 bbWeight=0.50 PerfScore 1.75
G_M46671_IG05:
xor ecx, ecx
mov dword ptr [rbp-0x30], 1
- mov gword ptr [rbp-0x68], rax
+ mov gword ptr [rbp-0x60], rax
cmp dword ptr [rax+0x08], r12d
jbe G_M46671_IG25
;; size=23 bbWeight=1 PerfScore 6.25
G_M46671_IG06:
mov dword ptr [rbp-0x2C], 1
test r14b, r14b
je SHORT G_M46671_IG07
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; code for System.Array:Clear(System.Array)
call [rsi]System.Array:Clear(System.Array)
;; size=27 bbWeight=0.50 PerfScore 2.88
G_M46671_IG07:
mov edi, 16
shlx edi, edi, r12d
cmp r13d, edi
- jne G_M46671_IG34
+ jne G_M46671_IG33
mov edi, r12d
shl rdi, 4
- mov rax, gword ptr [rbp-0x68]
+ mov rax, gword ptr [rbp-0x60]
lea r14, bword ptr [rax+rdi+0x10]
mov rax, gword ptr [r14]
- mov gword ptr [rbp-0x60], rax
- mov gword ptr [rbp-0x58], rbx
+ mov gword ptr [rbp-0x58], rax
mov rdi, r14
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
xor edi, edi
mov dword ptr [r14+0x08], edi
- cmp gword ptr [rbp-0x60], 0
- mov rbx, gword ptr [rbp-0x58]
- je SHORT G_M46671_IG11
+ mov r14, gword ptr [rbp-0x58]
+ test r14, r14
+ je SHORT G_M46671_IG09
mov rdi, gword ptr [r15+0x10]
cmp r12d, dword ptr [rdi+0x08]
- jae G_M46671_IG36
+ jae G_M46671_IG35
mov esi, r12d
mov rax, gword ptr [rdi+8*rsi+0x10]
test rax, rax
- jne SHORT G_M46671_IG10
- mov gword ptr [rbp-0x50], r15
+ jne SHORT G_M46671_IG08
mov rdi, r15
mov esi, r12d
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[double]:CreatePerCorePartitions(int):System.Buffers.SharedArrayPoolPartitions:this
call [rax]System.Buffers.SharedArrayPool`1[double]:CreatePerCorePartitions(int):System.Buffers.SharedArrayPoolPartitions:this
- mov gword ptr [rbp-0x58], rbx
- ;; size=127 bbWeight=0.50 PerfScore 15.38
+ ;; size=113 bbWeight=0.50 PerfScore 13.00
G_M46671_IG08:
mov rax, gword ptr [rax+0x08]
- mov gword ptr [rbp-0x70], rax
+ mov gword ptr [rbp-0x68], rax
+ mov rdi, 0xD1FFAB1E
mov rcx, 0xD1FFAB1E ; function address
- ;; size=18 bbWeight=0.50 PerfScore 1.62
+ call rcx
+ 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
+ jne SHORT G_M46671_IG10
+ jmp SHORT G_M46671_IG11
+ ;; size=52 bbWeight=0.50 PerfScore 6.88
G_M46671_IG09:
- call rcx ; Interop+Sys:SchedGetCpu():int
- mov ebx, eax
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- je SHORT G_M46671_IG12
- jmp G_M46671_IG32
- ;; size=24 bbWeight=0.50 PerfScore 4.75
-G_M46671_IG10:
- mov gword ptr [rbp-0x58], rbx
- mov gword ptr [rbp-0x50], r15
- jmp SHORT G_M46671_IG08
- ;; size=10 bbWeight=0.25 PerfScore 1.00
-G_M46671_IG11:
mov ecx, dword ptr [rbp-0x2C]
jmp G_M46671_IG25
;; size=8 bbWeight=0.25 PerfScore 0.75
+G_M46671_IG10:
+ mov eax, ecx
+ sar eax, 16
+ mov edx, eax
+ jmp SHORT G_M46671_IG12
+ ;; size=9 bbWeight=0.50 PerfScore 1.50
+G_M46671_IG11:
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov edx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
G_M46671_IG12:
mov rax, 0xD1FFAB1E ; global ptr
test byte ptr [rax], 1
- je G_M46671_IG33
+ je G_M46671_IG32
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M46671_IG13:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
- mov eax, ebx
+ mov eax, edx
xor edx, edx
div edx:eax, dword ptr [rdi]
- mov ebx, edx
- xor r15d, r15d
- mov r14, gword ptr [rbp-0x70]
- mov eax, dword ptr [r14+0x08]
- mov dword ptr [rbp-0x44], eax
- test eax, eax
+ mov eax, edx
+ xor ecx, ecx
+ mov dword ptr [rbp-0x40], ecx
+ mov rdx, gword ptr [rbp-0x68]
+ mov esi, dword ptr [rdx+0x08]
+ mov dword ptr [rbp-0x50], esi
+ test esi, esi
jle G_M46671_IG22
- ;; size=40 bbWeight=0.50 PerfScore 15.75
+ ;; size=41 bbWeight=0.50 PerfScore 16.25
G_M46671_IG14:
- cmp ebx, eax
- jae G_M46671_IG36
- mov edi, ebx
- mov rcx, gword ptr [r14+8*rdi+0x10]
- mov gword ptr [rbp-0x78], rcx
- cmp byte ptr [rcx], cl
- xor edx, edx
- mov dword ptr [rbp-0x3C], edx
- mov rdi, rcx
+ cmp eax, esi
+ jae G_M46671_IG35
+ mov dword ptr [rbp-0x3C], eax
+ mov edi, eax
+ mov r8, gword ptr [rdx+8*rdi+0x10]
+ mov gword ptr [rbp-0x70], r8
+ cmp byte ptr [r8], r8b
+ xor r9d, r9d
+ mov dword ptr [rbp-0x48], r9d
+ mov rdi, r8
call System.Threading.Monitor:Enter(System.Object)
- mov rax, gword ptr [rbp-0x78]
+ mov rax, gword ptr [rbp-0x70]
mov rdi, gword ptr [rax+0x08]
mov ecx, dword ptr [rax+0x10]
- mov dword ptr [rbp-0x40], ecx
+ mov dword ptr [rbp-0x4C], ecx
cmp dword ptr [rdi+0x08], ecx
jbe SHORT G_M46671_IG17
- ;; size=53 bbWeight=4 PerfScore 80.00
+ ;; size=59 bbWeight=4 PerfScore 84.00
G_M46671_IG15:
test ecx, ecx
jne SHORT G_M46671_IG18
xor esi, esi
mov dword ptr [rax+0x14], esi
;; size=9 bbWeight=2 PerfScore 5.00
G_M46671_IG16:
movsxd rsi, ecx
lea rdi, bword ptr [rdi+8*rsi+0x10]
- mov rsi, gword ptr [rbp-0x60]
+ mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- mov edi, dword ptr [rbp-0x40]
+ mov edi, dword ptr [rbp-0x4C]
inc edi
- mov rax, gword ptr [rbp-0x78]
+ mov rax, gword ptr [rbp-0x70]
mov dword ptr [rax+0x10], edi
- mov dword ptr [rbp-0x3C], 1
- ;; size=36 bbWeight=2 PerfScore 15.00
+ mov dword ptr [rbp-0x48], 1
+ ;; size=35 bbWeight=2 PerfScore 13.50
G_M46671_IG17:
mov rdi, rax
call System.Threading.Monitor:Exit(System.Object)
- cmp dword ptr [rbp-0x3C], 0
+ cmp dword ptr [rbp-0x48], 0
je SHORT G_M46671_IG19
jmp SHORT G_M46671_IG23
;; size=16 bbWeight=4 PerfScore 25.00
G_M46671_IG18:
jmp SHORT G_M46671_IG16
;; size=2 bbWeight=1 PerfScore 2.00
G_M46671_IG19:
- inc ebx
- mov edi, dword ptr [rbp-0x44]
- cmp edi, ebx
+ mov eax, dword ptr [rbp-0x3C]
+ inc eax
+ mov edi, eax
+ mov esi, dword ptr [rbp-0x50]
+ cmp esi, edi
jne SHORT G_M46671_IG21
- ;; size=9 bbWeight=4 PerfScore 10.00
+ ;; size=14 bbWeight=4 PerfScore 15.00
G_M46671_IG20:
- xor ebx, ebx
+ xor edi, edi
;; size=2 bbWeight=2 PerfScore 0.50
G_M46671_IG21:
- inc r15d
- cmp edi, r15d
+ mov ecx, dword ptr [rbp-0x40]
+ inc ecx
+ cmp esi, ecx
+ mov dword ptr [rbp-0x40], ecx
mov eax, edi
+ mov rdx, gword ptr [rbp-0x68]
jg G_M46671_IG14
- ;; size=14 bbWeight=4 PerfScore 7.00
+ ;; size=22 bbWeight=4 PerfScore 19.00
G_M46671_IG22:
xor edx, edx
jmp SHORT G_M46671_IG24
;; size=4 bbWeight=0.50 PerfScore 1.12
G_M46671_IG23:
mov edx, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M46671_IG24:
mov dword ptr [rbp-0x30], edx
mov ecx, dword ptr [rbp-0x2C]
- mov rbx, gword ptr [rbp-0x58]
- mov r15, gword ptr [rbp-0x50]
- ;; size=14 bbWeight=0.50 PerfScore 2.00
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
G_M46671_IG25:
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
cmp byte ptr [r14+0x9D], 0
je G_M46671_IG29
;; size=27 bbWeight=1 PerfScore 6.25
G_M46671_IG26:
test r13d, r13d
mov dword ptr [rbp-0x2C], ecx
je G_M46671_IG29
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov dword ptr [rbp-0x34], eax
mov dword ptr [rbp-0x38], r13d
cmp byte ptr [r15], r15b
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov r8d, eax
mov rdi, r14
mov edx, dword ptr [rbp-0x34]
mov ecx, dword ptr [rbp-0x38]
mov esi, 3
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this
call [rax]System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this
mov eax, dword ptr [rbp-0x2C]
test eax, dword ptr [rbp-0x30]
jne SHORT G_M46671_IG29
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ebx, eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
cmp dword ptr [rbp-0x2C], 0
je SHORT G_M46671_IG27
mov r8d, r12d
xor r9d, r9d
jmp SHORT G_M46671_IG28
;; size=109 bbWeight=0.50 PerfScore 14.12
G_M46671_IG27:
mov r8d, -1
mov r9d, 1
;; size=12 bbWeight=0.50 PerfScore 0.25
G_M46671_IG28:
mov rdi, r14
mov esi, ebx
mov edx, r13d
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferDropped(int,int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferDropped(int,int,int,int,int):this
;; size=20 bbWeight=0.50 PerfScore 2.00
G_M46671_IG29:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M46671_IG30:
- add rsp, 88
+ add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M46671_IG31:
mov edi, 14
call CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
jmp G_M46671_IG03
;; size=15 bbWeight=0 PerfScore 0.00
G_M46671_IG32:
- call CORINFO_HELP_POLL_GC
- jmp G_M46671_IG12
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M46671_IG33:
+ mov dword ptr [rbp-0x44], edx
mov rdi, 0xD1FFAB1E ; System.Buffers.SharedArrayPoolStatics
call CORINFO_HELP_GET_NONGCSTATIC_BASE
+ mov edx, dword ptr [rbp-0x44]
jmp G_M46671_IG13
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M46671_IG34:
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M46671_IG33:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_ArgumentException_BufferNotFromPool():System.String
call [rax]System.SR:get_ArgumentException_BufferNotFromPool():System.String
mov r15, rax
mov edi, 987
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
-G_M46671_IG35:
+G_M46671_IG34:
mov edi, 2
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
-G_M46671_IG36:
+G_M46671_IG35:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 938, prolog size 34, PerfScore 258.38, instruction count 240, allocated bytes for code 938 (MethodHash=711b49b0) for method System.Buffers.SharedArrayPool`1[double]:Return(double[],ubyte):this (FullOpts)
+; Total bytes of code 948, prolog size 28, PerfScore 276.75, instruction count 249, allocated bytes for code 948 (MethodHash=711b49b0) for method System.Buffers.SharedArrayPool`1[double]:Return(double[],ubyte):this (FullOpts)
10 (1.06 % of base) - System.Buffers.SharedArrayPool`1[long]:Return(long[],ubyte):this
; Assembly listing for method System.Buffers.SharedArrayPool`1[long]:Return(long[],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; 12 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T09] ( 8, 5 ) ref -> [rbp-0x50] this class-hnd single-def <System.Buffers.SharedArrayPool`1[long]>
-; V01 arg1 [V01,T08] ( 8, 6 ) ref -> [rbp-0x58] class-hnd single-def <long[]>
+; V00 this [V00,T09] ( 8, 5 ) ref -> r15 this class-hnd single-def <System.Buffers.SharedArrayPool`1[long]>
+; V01 arg1 [V01,T08] ( 8, 6 ) ref -> rbx class-hnd single-def <long[]>
; V02 arg2 [V02,T14] ( 3, 2.50) ubyte -> r14 single-def
; V03 loc0 [V03,T12] ( 8, 5 ) int -> r12
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V05 loc2 [V05,T23] ( 4, 2.50) ubyte -> [rbp-0x2C]
-; V06 loc3 [V06,T25] ( 3, 2 ) ubyte -> [rbp-0x30]
-; V07 loc4 [V07,T20] ( 4, 3 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V08 loc5 [V08,T21] ( 3, 3 ) ref -> [rbp-0x60] class-hnd spill-single-def <System.Array>
+; V05 loc2 [V05,T24] ( 4, 2.50) ubyte -> [rbp-0x2C]
+; V06 loc3 [V06,T26] ( 3, 2 ) ubyte -> [rbp-0x30]
+; V07 loc4 [V07,T21] ( 4, 3 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
+; V08 loc5 [V08,T22] ( 3, 3 ) ref -> [rbp-0x58] class-hnd spill-single-def <System.Array>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T19] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V11 tmp2 [V11,T16] ( 5, 4 ) ref -> [rbp-0x68]
-; V12 tmp3 [V12,T27] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
-; V13 tmp4 [V13,T28] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
-; V14 tmp5 [V14,T29] ( 2, 2 ) int -> rbx "impAppendStmt"
-; V15 tmp6 [V15,T30] ( 2, 2 ) int -> r13 "impAppendStmt"
+; V10 tmp1 [V10,T20] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V11 tmp2 [V11,T16] ( 5, 4 ) ref -> [rbp-0x60]
+; V12 tmp3 [V12,T28] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
+; V13 tmp4 [V13,T29] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
+; V14 tmp5 [V14,T30] ( 2, 2 ) int -> rbx "impAppendStmt"
+; V15 tmp6 [V15,T31] ( 2, 2 ) int -> r13 "impAppendStmt"
;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
-; V19 tmp10 [V19,T36] ( 2, 1 ) int -> rcx
+; V19 tmp10 [V19,T40] ( 2, 1 ) int -> rcx
;* V20 tmp11 [V20 ] ( 0, 0 ) ref -> zero-ref single-def
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
-; V24 tmp15 [V24,T33] ( 3, 1.50) int -> r8
+; V24 tmp15 [V24,T35] ( 3, 1.50) int -> r8
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref single-def
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) ref -> zero-ref single-def
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp26 [V35,T34] ( 3, 1.50) int -> r9
+; V35 tmp26 [V35,T36] ( 3, 1.50) int -> r9
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V37 tmp28 [V37,T17] ( 4, 4 ) byref -> r14 single-def "dup spill"
;* V38 tmp29 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.SharedArrayPoolThreadLocalArray>
-; V39 tmp30 [V39,T26] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
-; V40 tmp31 [V40,T24] ( 4, 2 ) ref -> rax
-; V41 tmp32 [V41,T39] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V39 tmp30 [V39,T27] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V40 tmp31 [V40,T25] ( 4, 2 ) ref -> rax
+; V41 tmp32 [V41,T43] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V45 tmp36 [V45,T35] ( 3, 1.50) ubyte -> rdx "Inline return value spill temp"
-; V46 tmp37 [V46,T13] ( 3, 5 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
-; V47 tmp38 [V47,T01] ( 7, 22.50) int -> rbx "Inline stloc first use temp"
-; V48 tmp39 [V48,T05] ( 4, 12.50) int -> r15 "Inline stloc first use temp"
-; V49 tmp40 [V49,T02] ( 2, 16 ) int -> rbx "dup spill"
+; V45 tmp36 [V45,T37] ( 3, 1.50) ubyte -> rdx "Inline return value spill temp"
+; V46 tmp37 [V46,T13] ( 3, 5 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+; V47 tmp38 [V47,T01] ( 7, 22.50) int -> [rbp-0x3C] "Inline stloc first use temp"
+; V48 tmp39 [V48,T05] ( 4, 12.50) int -> [rbp-0x40] "Inline stloc first use temp"
+; V49 tmp40 [V49,T02] ( 2, 16 ) int -> rax "dup spill"
;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V51 tmp42 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp43 [V52,T07] ( 3, 10 ) ubyte -> [rbp-0x3C] "Inline stloc first use temp"
-; V53 tmp44 [V53,T00] ( 8, 56 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-; V54 tmp45 [V54,T06] ( 3, 10 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
-; V55 tmp46 [V55,T03] ( 5, 14 ) int -> [rbp-0x40] spill-single-def "Inline stloc first use temp"
-; V56 tmp47 [V56,T31] ( 2, 2 ) int -> r8 "Inlining Arg"
-;* V57 tmp48 [V57,T37] ( 0, 0 ) ref -> zero-ref single-def "field V38.Array (fldOffset=0x0)" P-INDEP
-;* V58 tmp49 [V58,T38] ( 0, 0 ) int -> zero-ref "field V38.MillisecondsTimeStamp (fldOffset=0x8)" P-INDEP
-; V59 tmp50 [V59,T22] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V60 tmp51 [V60,T40] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V61 tmp52 [V61,T41] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V62 cse0 [V62,T04] ( 5, 13 ) int -> [rbp-0x44] spill-single-def "CSE #04: aggressive"
-; V63 cse1 [V63,T15] ( 6, 4 ) int -> r13 "CSE #01: moderate"
-; V64 rat0 [V64,T32] ( 2, 2 ) int -> rbx "Spilling to split statement for tree"
-; V65 rat1 [V65,T18] ( 3, 4 ) byref -> rax "TLS field access"
-; V66 rat2 [V66,T11] ( 3, 6 ) long -> rax "TLS access"
-; V67 rat3 [V67,T10] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V51 tmp42 [V51,T38] ( 3, 1.50) int -> [rbp-0x44] "Inline return value spill temp"
+; V52 tmp43 [V52,T18] ( 4, 4 ) int -> rcx "dup spill"
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V54 tmp45 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V55 tmp46 [V55,T07] ( 3, 10 ) ubyte -> [rbp-0x48] "Inline stloc first use temp"
+; V56 tmp47 [V56,T00] ( 8, 56 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V57 tmp48 [V57,T06] ( 3, 10 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
+; V58 tmp49 [V58,T03] ( 5, 14 ) int -> [rbp-0x4C] spill-single-def "Inline stloc first use temp"
+; V59 tmp50 [V59,T32] ( 2, 2 ) int -> r8 "Inlining Arg"
+;* V60 tmp51 [V60,T41] ( 0, 0 ) ref -> zero-ref single-def "field V38.Array (fldOffset=0x0)" P-INDEP
+;* V61 tmp52 [V61,T42] ( 0, 0 ) int -> zero-ref "field V38.MillisecondsTimeStamp (fldOffset=0x8)" P-INDEP
+; V62 tmp53 [V62,T23] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V63 tmp54 [V63,T44] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
+; V64 tmp55 [V64,T45] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V65 cse0 [V65,T39] ( 3, 1.50) long -> rax "CSE #04: moderate"
+; V66 cse1 [V66,T04] ( 5, 13 ) int -> [rbp-0x50] spill-single-def "CSE #05: aggressive"
+; V67 cse2 [V67,T15] ( 6, 4 ) int -> r13 "CSE #01: moderate"
+; V68 rat0 [V68,T19] ( 3, 4 ) byref -> rax "TLS field access"
+; V69 rat1 [V69,T11] ( 3, 6 ) long -> rax "TLS access"
+; V70 rat2 [V70,T10] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V71 rat3 [V71,T33] ( 2, 2 ) long -> rax "TLS field access"
+; V72 rat4 [V72,T34] ( 2, 2 ) long -> rax "TLS access"
;
-; Lcl frame size = 88
+; Lcl frame size = 72
G_M62767_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 88
- vzeroupper
- lea rbp, [rsp+0x80]
+ sub rsp, 72
+ lea rbp, [rsp+0x70]
mov r15, rdi
mov rbx, rsi
mov r14d, edx
- ;; size=34 bbWeight=1 PerfScore 8.50
+ ;; size=28 bbWeight=1 PerfScore 7.50
G_M62767_IG02:
test rbx, rbx
- je G_M62767_IG35
+ je G_M62767_IG34
mov r13d, dword ptr [rbx+0x08]
lea edi, [r13-0x01]
or edi, 15
xor r12d, r12d
lzcnt r12d, edi
xor r12d, 31
add r12d, -3
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 16
jle G_M62767_IG31
mov rdi, gword ptr [rax+0x08]
mov rax, bword ptr [rdi+0x80]
test rax, rax
je G_M62767_IG31
;; size=87 bbWeight=1 PerfScore 19.50
G_M62767_IG03:
mov rax, gword ptr [rax+0x10]
test rax, rax
jne SHORT G_M62767_IG05
;; size=9 bbWeight=1 PerfScore 3.25
G_M62767_IG04:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[long]:InitializeTlsBucketsAndTrimming():System.Buffers.SharedArrayPoolThreadLocalArray[]:this
call [rax]System.Buffers.SharedArrayPool`1[long]:InitializeTlsBucketsAndTrimming():System.Buffers.SharedArrayPoolThreadLocalArray[]:this
;; size=15 bbWeight=0.50 PerfScore 1.75
G_M62767_IG05:
xor ecx, ecx
mov dword ptr [rbp-0x30], 1
- mov gword ptr [rbp-0x68], rax
+ mov gword ptr [rbp-0x60], rax
cmp dword ptr [rax+0x08], r12d
jbe G_M62767_IG25
;; size=23 bbWeight=1 PerfScore 6.25
G_M62767_IG06:
mov dword ptr [rbp-0x2C], 1
test r14b, r14b
je SHORT G_M62767_IG07
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; code for System.Array:Clear(System.Array)
call [rsi]System.Array:Clear(System.Array)
;; size=27 bbWeight=0.50 PerfScore 2.88
G_M62767_IG07:
mov edi, 16
shlx edi, edi, r12d
cmp r13d, edi
- jne G_M62767_IG34
+ jne G_M62767_IG33
mov edi, r12d
shl rdi, 4
- mov rax, gword ptr [rbp-0x68]
+ mov rax, gword ptr [rbp-0x60]
lea r14, bword ptr [rax+rdi+0x10]
mov rax, gword ptr [r14]
- mov gword ptr [rbp-0x60], rax
- mov gword ptr [rbp-0x58], rbx
+ mov gword ptr [rbp-0x58], rax
mov rdi, r14
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
xor edi, edi
mov dword ptr [r14+0x08], edi
- cmp gword ptr [rbp-0x60], 0
- mov rbx, gword ptr [rbp-0x58]
- je SHORT G_M62767_IG11
+ mov r14, gword ptr [rbp-0x58]
+ test r14, r14
+ je SHORT G_M62767_IG09
mov rdi, gword ptr [r15+0x10]
cmp r12d, dword ptr [rdi+0x08]
- jae G_M62767_IG36
+ jae G_M62767_IG35
mov esi, r12d
mov rax, gword ptr [rdi+8*rsi+0x10]
test rax, rax
- jne SHORT G_M62767_IG10
- mov gword ptr [rbp-0x50], r15
+ jne SHORT G_M62767_IG08
mov rdi, r15
mov esi, r12d
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[long]:CreatePerCorePartitions(int):System.Buffers.SharedArrayPoolPartitions:this
call [rax]System.Buffers.SharedArrayPool`1[long]:CreatePerCorePartitions(int):System.Buffers.SharedArrayPoolPartitions:this
- mov gword ptr [rbp-0x58], rbx
- ;; size=127 bbWeight=0.50 PerfScore 15.38
+ ;; size=113 bbWeight=0.50 PerfScore 13.00
G_M62767_IG08:
mov rax, gword ptr [rax+0x08]
- mov gword ptr [rbp-0x70], rax
+ mov gword ptr [rbp-0x68], rax
+ mov rdi, 0xD1FFAB1E
mov rcx, 0xD1FFAB1E ; function address
- ;; size=18 bbWeight=0.50 PerfScore 1.62
+ call rcx
+ 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
+ jne SHORT G_M62767_IG10
+ jmp SHORT G_M62767_IG11
+ ;; size=52 bbWeight=0.50 PerfScore 6.88
G_M62767_IG09:
- call rcx ; Interop+Sys:SchedGetCpu():int
- mov ebx, eax
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- je SHORT G_M62767_IG12
- jmp G_M62767_IG32
- ;; size=24 bbWeight=0.50 PerfScore 4.75
-G_M62767_IG10:
- mov gword ptr [rbp-0x58], rbx
- mov gword ptr [rbp-0x50], r15
- jmp SHORT G_M62767_IG08
- ;; size=10 bbWeight=0.25 PerfScore 1.00
-G_M62767_IG11:
mov ecx, dword ptr [rbp-0x2C]
jmp G_M62767_IG25
;; size=8 bbWeight=0.25 PerfScore 0.75
+G_M62767_IG10:
+ mov eax, ecx
+ sar eax, 16
+ mov edx, eax
+ jmp SHORT G_M62767_IG12
+ ;; size=9 bbWeight=0.50 PerfScore 1.50
+G_M62767_IG11:
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov edx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
G_M62767_IG12:
mov rax, 0xD1FFAB1E ; global ptr
test byte ptr [rax], 1
- je G_M62767_IG33
+ je G_M62767_IG32
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M62767_IG13:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
- mov eax, ebx
+ mov eax, edx
xor edx, edx
div edx:eax, dword ptr [rdi]
- mov ebx, edx
- xor r15d, r15d
- mov r14, gword ptr [rbp-0x70]
- mov eax, dword ptr [r14+0x08]
- mov dword ptr [rbp-0x44], eax
- test eax, eax
+ mov eax, edx
+ xor ecx, ecx
+ mov dword ptr [rbp-0x40], ecx
+ mov rdx, gword ptr [rbp-0x68]
+ mov esi, dword ptr [rdx+0x08]
+ mov dword ptr [rbp-0x50], esi
+ test esi, esi
jle G_M62767_IG22
- ;; size=40 bbWeight=0.50 PerfScore 15.75
+ ;; size=41 bbWeight=0.50 PerfScore 16.25
G_M62767_IG14:
- cmp ebx, eax
- jae G_M62767_IG36
- mov edi, ebx
- mov rcx, gword ptr [r14+8*rdi+0x10]
- mov gword ptr [rbp-0x78], rcx
- cmp byte ptr [rcx], cl
- xor edx, edx
- mov dword ptr [rbp-0x3C], edx
- mov rdi, rcx
+ cmp eax, esi
+ jae G_M62767_IG35
+ mov dword ptr [rbp-0x3C], eax
+ mov edi, eax
+ mov r8, gword ptr [rdx+8*rdi+0x10]
+ mov gword ptr [rbp-0x70], r8
+ cmp byte ptr [r8], r8b
+ xor r9d, r9d
+ mov dword ptr [rbp-0x48], r9d
+ mov rdi, r8
call System.Threading.Monitor:Enter(System.Object)
- mov rax, gword ptr [rbp-0x78]
+ mov rax, gword ptr [rbp-0x70]
mov rdi, gword ptr [rax+0x08]
mov ecx, dword ptr [rax+0x10]
- mov dword ptr [rbp-0x40], ecx
+ mov dword ptr [rbp-0x4C], ecx
cmp dword ptr [rdi+0x08], ecx
jbe SHORT G_M62767_IG17
- ;; size=53 bbWeight=4 PerfScore 80.00
+ ;; size=59 bbWeight=4 PerfScore 84.00
G_M62767_IG15:
test ecx, ecx
jne SHORT G_M62767_IG18
xor esi, esi
mov dword ptr [rax+0x14], esi
;; size=9 bbWeight=2 PerfScore 5.00
G_M62767_IG16:
movsxd rsi, ecx
lea rdi, bword ptr [rdi+8*rsi+0x10]
- mov rsi, gword ptr [rbp-0x60]
+ mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- mov edi, dword ptr [rbp-0x40]
+ mov edi, dword ptr [rbp-0x4C]
inc edi
- mov rax, gword ptr [rbp-0x78]
+ mov rax, gword ptr [rbp-0x70]
mov dword ptr [rax+0x10], edi
- mov dword ptr [rbp-0x3C], 1
- ;; size=36 bbWeight=2 PerfScore 15.00
+ mov dword ptr [rbp-0x48], 1
+ ;; size=35 bbWeight=2 PerfScore 13.50
G_M62767_IG17:
mov rdi, rax
call System.Threading.Monitor:Exit(System.Object)
- cmp dword ptr [rbp-0x3C], 0
+ cmp dword ptr [rbp-0x48], 0
je SHORT G_M62767_IG19
jmp SHORT G_M62767_IG23
;; size=16 bbWeight=4 PerfScore 25.00
G_M62767_IG18:
jmp SHORT G_M62767_IG16
;; size=2 bbWeight=1 PerfScore 2.00
G_M62767_IG19:
- inc ebx
- mov edi, dword ptr [rbp-0x44]
- cmp edi, ebx
+ mov eax, dword ptr [rbp-0x3C]
+ inc eax
+ mov edi, eax
+ mov esi, dword ptr [rbp-0x50]
+ cmp esi, edi
jne SHORT G_M62767_IG21
- ;; size=9 bbWeight=4 PerfScore 10.00
+ ;; size=14 bbWeight=4 PerfScore 15.00
G_M62767_IG20:
- xor ebx, ebx
+ xor edi, edi
;; size=2 bbWeight=2 PerfScore 0.50
G_M62767_IG21:
- inc r15d
- cmp edi, r15d
+ mov ecx, dword ptr [rbp-0x40]
+ inc ecx
+ cmp esi, ecx
+ mov dword ptr [rbp-0x40], ecx
mov eax, edi
+ mov rdx, gword ptr [rbp-0x68]
jg G_M62767_IG14
- ;; size=14 bbWeight=4 PerfScore 7.00
+ ;; size=22 bbWeight=4 PerfScore 19.00
G_M62767_IG22:
xor edx, edx
jmp SHORT G_M62767_IG24
;; size=4 bbWeight=0.50 PerfScore 1.12
G_M62767_IG23:
mov edx, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M62767_IG24:
mov dword ptr [rbp-0x30], edx
mov ecx, dword ptr [rbp-0x2C]
- mov rbx, gword ptr [rbp-0x58]
- mov r15, gword ptr [rbp-0x50]
- ;; size=14 bbWeight=0.50 PerfScore 2.00
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
G_M62767_IG25:
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
cmp byte ptr [r14+0x9D], 0
je G_M62767_IG29
;; size=27 bbWeight=1 PerfScore 6.25
G_M62767_IG26:
test r13d, r13d
mov dword ptr [rbp-0x2C], ecx
je G_M62767_IG29
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov dword ptr [rbp-0x34], eax
mov dword ptr [rbp-0x38], r13d
cmp byte ptr [r15], r15b
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov r8d, eax
mov rdi, r14
mov edx, dword ptr [rbp-0x34]
mov ecx, dword ptr [rbp-0x38]
mov esi, 3
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this
call [rax]System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this
mov eax, dword ptr [rbp-0x2C]
test eax, dword ptr [rbp-0x30]
jne SHORT G_M62767_IG29
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ebx, eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
cmp dword ptr [rbp-0x2C], 0
je SHORT G_M62767_IG27
mov r8d, r12d
xor r9d, r9d
jmp SHORT G_M62767_IG28
;; size=109 bbWeight=0.50 PerfScore 14.12
G_M62767_IG27:
mov r8d, -1
mov r9d, 1
;; size=12 bbWeight=0.50 PerfScore 0.25
G_M62767_IG28:
mov rdi, r14
mov esi, ebx
mov edx, r13d
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferDropped(int,int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferDropped(int,int,int,int,int):this
;; size=20 bbWeight=0.50 PerfScore 2.00
G_M62767_IG29:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M62767_IG30:
- add rsp, 88
+ add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M62767_IG31:
mov edi, 16
call CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
jmp G_M62767_IG03
;; size=15 bbWeight=0 PerfScore 0.00
G_M62767_IG32:
- call CORINFO_HELP_POLL_GC
- jmp G_M62767_IG12
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M62767_IG33:
+ mov dword ptr [rbp-0x44], edx
mov rdi, 0xD1FFAB1E ; System.Buffers.SharedArrayPoolStatics
call CORINFO_HELP_GET_NONGCSTATIC_BASE
+ mov edx, dword ptr [rbp-0x44]
jmp G_M62767_IG13
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M62767_IG34:
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M62767_IG33:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_ArgumentException_BufferNotFromPool():System.String
call [rax]System.SR:get_ArgumentException_BufferNotFromPool():System.String
mov r15, rax
mov edi, 987
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
-G_M62767_IG35:
+G_M62767_IG34:
mov edi, 2
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
-G_M62767_IG36:
+G_M62767_IG35:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 941, prolog size 34, PerfScore 258.38, instruction count 240, allocated bytes for code 941 (MethodHash=2dda0ad0) for method System.Buffers.SharedArrayPool`1[long]:Return(long[],ubyte):this (FullOpts)
+; Total bytes of code 951, prolog size 28, PerfScore 276.75, instruction count 249, allocated bytes for code 951 (MethodHash=2dda0ad0) for method System.Buffers.SharedArrayPool`1[long]:Return(long[],ubyte):this (FullOpts)
10 (1.07 % of base) - System.Buffers.SharedArrayPool`1[short]:Return(short[],ubyte):this
; Assembly listing for method System.Buffers.SharedArrayPool`1[short]:Return(short[],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; 12 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T09] ( 8, 5 ) ref -> [rbp-0x50] this class-hnd single-def <System.Buffers.SharedArrayPool`1[short]>
-; V01 arg1 [V01,T08] ( 8, 6 ) ref -> [rbp-0x58] class-hnd single-def <short[]>
+; V00 this [V00,T09] ( 8, 5 ) ref -> r15 this class-hnd single-def <System.Buffers.SharedArrayPool`1[short]>
+; V01 arg1 [V01,T08] ( 8, 6 ) ref -> rbx class-hnd single-def <short[]>
; V02 arg2 [V02,T14] ( 3, 2.50) ubyte -> r14 single-def
; V03 loc0 [V03,T12] ( 8, 5 ) int -> r12
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V05 loc2 [V05,T23] ( 4, 2.50) ubyte -> [rbp-0x2C]
-; V06 loc3 [V06,T25] ( 3, 2 ) ubyte -> [rbp-0x30]
-; V07 loc4 [V07,T20] ( 4, 3 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V08 loc5 [V08,T21] ( 3, 3 ) ref -> [rbp-0x60] class-hnd spill-single-def <System.Array>
+; V05 loc2 [V05,T24] ( 4, 2.50) ubyte -> [rbp-0x2C]
+; V06 loc3 [V06,T26] ( 3, 2 ) ubyte -> [rbp-0x30]
+; V07 loc4 [V07,T21] ( 4, 3 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
+; V08 loc5 [V08,T22] ( 3, 3 ) ref -> [rbp-0x58] class-hnd spill-single-def <System.Array>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T19] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V11 tmp2 [V11,T16] ( 5, 4 ) ref -> [rbp-0x68]
-; V12 tmp3 [V12,T27] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
-; V13 tmp4 [V13,T28] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
-; V14 tmp5 [V14,T29] ( 2, 2 ) int -> rbx "impAppendStmt"
-; V15 tmp6 [V15,T30] ( 2, 2 ) int -> r13 "impAppendStmt"
+; V10 tmp1 [V10,T20] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V11 tmp2 [V11,T16] ( 5, 4 ) ref -> [rbp-0x60]
+; V12 tmp3 [V12,T28] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
+; V13 tmp4 [V13,T29] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
+; V14 tmp5 [V14,T30] ( 2, 2 ) int -> rbx "impAppendStmt"
+; V15 tmp6 [V15,T31] ( 2, 2 ) int -> r13 "impAppendStmt"
;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
-; V19 tmp10 [V19,T36] ( 2, 1 ) int -> rcx
+; V19 tmp10 [V19,T40] ( 2, 1 ) int -> rcx
;* V20 tmp11 [V20 ] ( 0, 0 ) ref -> zero-ref single-def
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
-; V24 tmp15 [V24,T33] ( 3, 1.50) int -> r8
+; V24 tmp15 [V24,T35] ( 3, 1.50) int -> r8
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref single-def
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) ref -> zero-ref single-def
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp26 [V35,T34] ( 3, 1.50) int -> r9
+; V35 tmp26 [V35,T36] ( 3, 1.50) int -> r9
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V37 tmp28 [V37,T17] ( 4, 4 ) byref -> r14 single-def "dup spill"
;* V38 tmp29 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.SharedArrayPoolThreadLocalArray>
-; V39 tmp30 [V39,T26] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
-; V40 tmp31 [V40,T24] ( 4, 2 ) ref -> rax
-; V41 tmp32 [V41,T39] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V39 tmp30 [V39,T27] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V40 tmp31 [V40,T25] ( 4, 2 ) ref -> rax
+; V41 tmp32 [V41,T43] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V45 tmp36 [V45,T35] ( 3, 1.50) ubyte -> rdx "Inline return value spill temp"
-; V46 tmp37 [V46,T13] ( 3, 5 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
-; V47 tmp38 [V47,T01] ( 7, 22.50) int -> rbx "Inline stloc first use temp"
-; V48 tmp39 [V48,T05] ( 4, 12.50) int -> r15 "Inline stloc first use temp"
-; V49 tmp40 [V49,T02] ( 2, 16 ) int -> rbx "dup spill"
+; V45 tmp36 [V45,T37] ( 3, 1.50) ubyte -> rdx "Inline return value spill temp"
+; V46 tmp37 [V46,T13] ( 3, 5 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+; V47 tmp38 [V47,T01] ( 7, 22.50) int -> [rbp-0x3C] "Inline stloc first use temp"
+; V48 tmp39 [V48,T05] ( 4, 12.50) int -> [rbp-0x40] "Inline stloc first use temp"
+; V49 tmp40 [V49,T02] ( 2, 16 ) int -> rax "dup spill"
;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V51 tmp42 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp43 [V52,T07] ( 3, 10 ) ubyte -> [rbp-0x3C] "Inline stloc first use temp"
-; V53 tmp44 [V53,T00] ( 8, 56 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-; V54 tmp45 [V54,T06] ( 3, 10 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
-; V55 tmp46 [V55,T03] ( 5, 14 ) int -> [rbp-0x40] spill-single-def "Inline stloc first use temp"
-; V56 tmp47 [V56,T31] ( 2, 2 ) int -> r8 "Inlining Arg"
-;* V57 tmp48 [V57,T37] ( 0, 0 ) ref -> zero-ref single-def "field V38.Array (fldOffset=0x0)" P-INDEP
-;* V58 tmp49 [V58,T38] ( 0, 0 ) int -> zero-ref "field V38.MillisecondsTimeStamp (fldOffset=0x8)" P-INDEP
-; V59 tmp50 [V59,T22] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V60 tmp51 [V60,T40] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V61 tmp52 [V61,T41] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V62 cse0 [V62,T04] ( 5, 13 ) int -> [rbp-0x44] spill-single-def "CSE #04: aggressive"
-; V63 cse1 [V63,T15] ( 6, 4 ) int -> r13 "CSE #01: moderate"
-; V64 rat0 [V64,T32] ( 2, 2 ) int -> rbx "Spilling to split statement for tree"
-; V65 rat1 [V65,T18] ( 3, 4 ) byref -> rax "TLS field access"
-; V66 rat2 [V66,T11] ( 3, 6 ) long -> rax "TLS access"
-; V67 rat3 [V67,T10] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V51 tmp42 [V51,T38] ( 3, 1.50) int -> [rbp-0x44] "Inline return value spill temp"
+; V52 tmp43 [V52,T18] ( 4, 4 ) int -> rcx "dup spill"
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V54 tmp45 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V55 tmp46 [V55,T07] ( 3, 10 ) ubyte -> [rbp-0x48] "Inline stloc first use temp"
+; V56 tmp47 [V56,T00] ( 8, 56 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V57 tmp48 [V57,T06] ( 3, 10 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
+; V58 tmp49 [V58,T03] ( 5, 14 ) int -> [rbp-0x4C] spill-single-def "Inline stloc first use temp"
+; V59 tmp50 [V59,T32] ( 2, 2 ) int -> r8 "Inlining Arg"
+;* V60 tmp51 [V60,T41] ( 0, 0 ) ref -> zero-ref single-def "field V38.Array (fldOffset=0x0)" P-INDEP
+;* V61 tmp52 [V61,T42] ( 0, 0 ) int -> zero-ref "field V38.MillisecondsTimeStamp (fldOffset=0x8)" P-INDEP
+; V62 tmp53 [V62,T23] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V63 tmp54 [V63,T44] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
+; V64 tmp55 [V64,T45] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V65 cse0 [V65,T39] ( 3, 1.50) long -> rax "CSE #04: moderate"
+; V66 cse1 [V66,T04] ( 5, 13 ) int -> [rbp-0x50] spill-single-def "CSE #05: aggressive"
+; V67 cse2 [V67,T15] ( 6, 4 ) int -> r13 "CSE #01: moderate"
+; V68 rat0 [V68,T19] ( 3, 4 ) byref -> rax "TLS field access"
+; V69 rat1 [V69,T11] ( 3, 6 ) long -> rax "TLS access"
+; V70 rat2 [V70,T10] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V71 rat3 [V71,T33] ( 2, 2 ) long -> rax "TLS field access"
+; V72 rat4 [V72,T34] ( 2, 2 ) long -> rax "TLS access"
;
-; Lcl frame size = 88
+; Lcl frame size = 72
G_M62415_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 88
- vzeroupper
- lea rbp, [rsp+0x80]
+ sub rsp, 72
+ lea rbp, [rsp+0x70]
mov r15, rdi
mov rbx, rsi
mov r14d, edx
- ;; size=34 bbWeight=1 PerfScore 8.50
+ ;; size=28 bbWeight=1 PerfScore 7.50
G_M62415_IG02:
test rbx, rbx
- je G_M62415_IG35
+ je G_M62415_IG34
mov r13d, dword ptr [rbx+0x08]
lea edi, [r13-0x01]
or edi, 15
xor r12d, r12d
lzcnt r12d, edi
xor r12d, 31
add r12d, -3
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 13
jle G_M62415_IG31
mov rdi, gword ptr [rax+0x08]
mov rax, bword ptr [rdi+0x68]
test rax, rax
je G_M62415_IG31
;; size=84 bbWeight=1 PerfScore 19.50
G_M62415_IG03:
mov rax, gword ptr [rax+0x10]
test rax, rax
jne SHORT G_M62415_IG05
;; size=9 bbWeight=1 PerfScore 3.25
G_M62415_IG04:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[short]:InitializeTlsBucketsAndTrimming():System.Buffers.SharedArrayPoolThreadLocalArray[]:this
call [rax]System.Buffers.SharedArrayPool`1[short]:InitializeTlsBucketsAndTrimming():System.Buffers.SharedArrayPoolThreadLocalArray[]:this
;; size=15 bbWeight=0.50 PerfScore 1.75
G_M62415_IG05:
xor ecx, ecx
mov dword ptr [rbp-0x30], 1
- mov gword ptr [rbp-0x68], rax
+ mov gword ptr [rbp-0x60], rax
cmp dword ptr [rax+0x08], r12d
jbe G_M62415_IG25
;; size=23 bbWeight=1 PerfScore 6.25
G_M62415_IG06:
mov dword ptr [rbp-0x2C], 1
test r14b, r14b
je SHORT G_M62415_IG07
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; code for System.Array:Clear(System.Array)
call [rsi]System.Array:Clear(System.Array)
;; size=27 bbWeight=0.50 PerfScore 2.88
G_M62415_IG07:
mov edi, 16
shlx edi, edi, r12d
cmp r13d, edi
- jne G_M62415_IG34
+ jne G_M62415_IG33
mov edi, r12d
shl rdi, 4
- mov rax, gword ptr [rbp-0x68]
+ mov rax, gword ptr [rbp-0x60]
lea r14, bword ptr [rax+rdi+0x10]
mov rax, gword ptr [r14]
- mov gword ptr [rbp-0x60], rax
- mov gword ptr [rbp-0x58], rbx
+ mov gword ptr [rbp-0x58], rax
mov rdi, r14
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
xor edi, edi
mov dword ptr [r14+0x08], edi
- cmp gword ptr [rbp-0x60], 0
- mov rbx, gword ptr [rbp-0x58]
- je SHORT G_M62415_IG11
+ mov r14, gword ptr [rbp-0x58]
+ test r14, r14
+ je SHORT G_M62415_IG09
mov rdi, gword ptr [r15+0x10]
cmp r12d, dword ptr [rdi+0x08]
- jae G_M62415_IG36
+ jae G_M62415_IG35
mov esi, r12d
mov rax, gword ptr [rdi+8*rsi+0x10]
test rax, rax
- jne SHORT G_M62415_IG10
- mov gword ptr [rbp-0x50], r15
+ jne SHORT G_M62415_IG08
mov rdi, r15
mov esi, r12d
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[short]:CreatePerCorePartitions(int):System.Buffers.SharedArrayPoolPartitions:this
call [rax]System.Buffers.SharedArrayPool`1[short]:CreatePerCorePartitions(int):System.Buffers.SharedArrayPoolPartitions:this
- mov gword ptr [rbp-0x58], rbx
- ;; size=127 bbWeight=0.50 PerfScore 15.38
+ ;; size=113 bbWeight=0.50 PerfScore 13.00
G_M62415_IG08:
mov rax, gword ptr [rax+0x08]
- mov gword ptr [rbp-0x70], rax
+ mov gword ptr [rbp-0x68], rax
+ mov rdi, 0xD1FFAB1E
mov rcx, 0xD1FFAB1E ; function address
- ;; size=18 bbWeight=0.50 PerfScore 1.62
+ call rcx
+ 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
+ jne SHORT G_M62415_IG10
+ jmp SHORT G_M62415_IG11
+ ;; size=52 bbWeight=0.50 PerfScore 6.88
G_M62415_IG09:
- call rcx ; Interop+Sys:SchedGetCpu():int
- mov ebx, eax
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- je SHORT G_M62415_IG12
- jmp G_M62415_IG32
- ;; size=24 bbWeight=0.50 PerfScore 4.75
-G_M62415_IG10:
- mov gword ptr [rbp-0x58], rbx
- mov gword ptr [rbp-0x50], r15
- jmp SHORT G_M62415_IG08
- ;; size=10 bbWeight=0.25 PerfScore 1.00
-G_M62415_IG11:
mov ecx, dword ptr [rbp-0x2C]
jmp G_M62415_IG25
;; size=8 bbWeight=0.25 PerfScore 0.75
+G_M62415_IG10:
+ mov eax, ecx
+ sar eax, 16
+ mov edx, eax
+ jmp SHORT G_M62415_IG12
+ ;; size=9 bbWeight=0.50 PerfScore 1.50
+G_M62415_IG11:
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov edx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
G_M62415_IG12:
mov rax, 0xD1FFAB1E ; global ptr
test byte ptr [rax], 1
- je G_M62415_IG33
+ je G_M62415_IG32
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M62415_IG13:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
- mov eax, ebx
+ mov eax, edx
xor edx, edx
div edx:eax, dword ptr [rdi]
- mov ebx, edx
- xor r15d, r15d
- mov r14, gword ptr [rbp-0x70]
- mov eax, dword ptr [r14+0x08]
- mov dword ptr [rbp-0x44], eax
- test eax, eax
+ mov eax, edx
+ xor ecx, ecx
+ mov dword ptr [rbp-0x40], ecx
+ mov rdx, gword ptr [rbp-0x68]
+ mov esi, dword ptr [rdx+0x08]
+ mov dword ptr [rbp-0x50], esi
+ test esi, esi
jle G_M62415_IG22
- ;; size=40 bbWeight=0.50 PerfScore 15.75
+ ;; size=41 bbWeight=0.50 PerfScore 16.25
G_M62415_IG14:
- cmp ebx, eax
- jae G_M62415_IG36
- mov edi, ebx
- mov rcx, gword ptr [r14+8*rdi+0x10]
- mov gword ptr [rbp-0x78], rcx
- cmp byte ptr [rcx], cl
- xor edx, edx
- mov dword ptr [rbp-0x3C], edx
- mov rdi, rcx
+ cmp eax, esi
+ jae G_M62415_IG35
+ mov dword ptr [rbp-0x3C], eax
+ mov edi, eax
+ mov r8, gword ptr [rdx+8*rdi+0x10]
+ mov gword ptr [rbp-0x70], r8
+ cmp byte ptr [r8], r8b
+ xor r9d, r9d
+ mov dword ptr [rbp-0x48], r9d
+ mov rdi, r8
call System.Threading.Monitor:Enter(System.Object)
- mov rax, gword ptr [rbp-0x78]
+ mov rax, gword ptr [rbp-0x70]
mov rdi, gword ptr [rax+0x08]
mov ecx, dword ptr [rax+0x10]
- mov dword ptr [rbp-0x40], ecx
+ mov dword ptr [rbp-0x4C], ecx
cmp dword ptr [rdi+0x08], ecx
jbe SHORT G_M62415_IG17
- ;; size=53 bbWeight=4 PerfScore 80.00
+ ;; size=59 bbWeight=4 PerfScore 84.00
G_M62415_IG15:
test ecx, ecx
jne SHORT G_M62415_IG18
xor esi, esi
mov dword ptr [rax+0x14], esi
;; size=9 bbWeight=2 PerfScore 5.00
G_M62415_IG16:
movsxd rsi, ecx
lea rdi, bword ptr [rdi+8*rsi+0x10]
- mov rsi, gword ptr [rbp-0x60]
+ mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- mov edi, dword ptr [rbp-0x40]
+ mov edi, dword ptr [rbp-0x4C]
inc edi
- mov rax, gword ptr [rbp-0x78]
+ mov rax, gword ptr [rbp-0x70]
mov dword ptr [rax+0x10], edi
- mov dword ptr [rbp-0x3C], 1
- ;; size=36 bbWeight=2 PerfScore 15.00
+ mov dword ptr [rbp-0x48], 1
+ ;; size=35 bbWeight=2 PerfScore 13.50
G_M62415_IG17:
mov rdi, rax
call System.Threading.Monitor:Exit(System.Object)
- cmp dword ptr [rbp-0x3C], 0
+ cmp dword ptr [rbp-0x48], 0
je SHORT G_M62415_IG19
jmp SHORT G_M62415_IG23
;; size=16 bbWeight=4 PerfScore 25.00
G_M62415_IG18:
jmp SHORT G_M62415_IG16
;; size=2 bbWeight=1 PerfScore 2.00
G_M62415_IG19:
- inc ebx
- mov edi, dword ptr [rbp-0x44]
- cmp edi, ebx
+ mov eax, dword ptr [rbp-0x3C]
+ inc eax
+ mov edi, eax
+ mov esi, dword ptr [rbp-0x50]
+ cmp esi, edi
jne SHORT G_M62415_IG21
- ;; size=9 bbWeight=4 PerfScore 10.00
+ ;; size=14 bbWeight=4 PerfScore 15.00
G_M62415_IG20:
- xor ebx, ebx
+ xor edi, edi
;; size=2 bbWeight=2 PerfScore 0.50
G_M62415_IG21:
- inc r15d
- cmp edi, r15d
+ mov ecx, dword ptr [rbp-0x40]
+ inc ecx
+ cmp esi, ecx
+ mov dword ptr [rbp-0x40], ecx
mov eax, edi
+ mov rdx, gword ptr [rbp-0x68]
jg G_M62415_IG14
- ;; size=14 bbWeight=4 PerfScore 7.00
+ ;; size=22 bbWeight=4 PerfScore 19.00
G_M62415_IG22:
xor edx, edx
jmp SHORT G_M62415_IG24
;; size=4 bbWeight=0.50 PerfScore 1.12
G_M62415_IG23:
mov edx, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M62415_IG24:
mov dword ptr [rbp-0x30], edx
mov ecx, dword ptr [rbp-0x2C]
- mov rbx, gword ptr [rbp-0x58]
- mov r15, gword ptr [rbp-0x50]
- ;; size=14 bbWeight=0.50 PerfScore 2.00
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
G_M62415_IG25:
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
cmp byte ptr [r14+0x9D], 0
je G_M62415_IG29
;; size=27 bbWeight=1 PerfScore 6.25
G_M62415_IG26:
test r13d, r13d
mov dword ptr [rbp-0x2C], ecx
je G_M62415_IG29
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov dword ptr [rbp-0x34], eax
mov dword ptr [rbp-0x38], r13d
cmp byte ptr [r15], r15b
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov r8d, eax
mov rdi, r14
mov edx, dword ptr [rbp-0x34]
mov ecx, dword ptr [rbp-0x38]
mov esi, 3
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this
call [rax]System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this
mov eax, dword ptr [rbp-0x2C]
test eax, dword ptr [rbp-0x30]
jne SHORT G_M62415_IG29
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ebx, eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
cmp dword ptr [rbp-0x2C], 0
je SHORT G_M62415_IG27
mov r8d, r12d
xor r9d, r9d
jmp SHORT G_M62415_IG28
;; size=109 bbWeight=0.50 PerfScore 14.12
G_M62415_IG27:
mov r8d, -1
mov r9d, 1
;; size=12 bbWeight=0.50 PerfScore 0.25
G_M62415_IG28:
mov rdi, r14
mov esi, ebx
mov edx, r13d
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferDropped(int,int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferDropped(int,int,int,int,int):this
;; size=20 bbWeight=0.50 PerfScore 2.00
G_M62415_IG29:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M62415_IG30:
- add rsp, 88
+ add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M62415_IG31:
mov edi, 13
call CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
jmp G_M62415_IG03
;; size=15 bbWeight=0 PerfScore 0.00
G_M62415_IG32:
- call CORINFO_HELP_POLL_GC
- jmp G_M62415_IG12
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M62415_IG33:
+ mov dword ptr [rbp-0x44], edx
mov rdi, 0xD1FFAB1E ; System.Buffers.SharedArrayPoolStatics
call CORINFO_HELP_GET_NONGCSTATIC_BASE
+ mov edx, dword ptr [rbp-0x44]
jmp G_M62415_IG13
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M62415_IG34:
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M62415_IG33:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_ArgumentException_BufferNotFromPool():System.String
call [rax]System.SR:get_ArgumentException_BufferNotFromPool():System.String
mov r15, rax
mov edi, 987
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
-G_M62415_IG35:
+G_M62415_IG34:
mov edi, 2
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
-G_M62415_IG36:
+G_M62415_IG35:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 938, prolog size 34, PerfScore 258.38, instruction count 240, allocated bytes for code 938 (MethodHash=23430c30) for method System.Buffers.SharedArrayPool`1[short]:Return(short[],ubyte):this (FullOpts)
+; Total bytes of code 948, prolog size 28, PerfScore 276.75, instruction count 249, allocated bytes for code 948 (MethodHash=23430c30) for method System.Buffers.SharedArrayPool`1[short]:Return(short[],ubyte):this (FullOpts)
10 (1.05 % of base) - System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:Return(System.Nullable`1[int][],ubyte):this
; Assembly listing for method System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:Return(System.Nullable`1[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; 12 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T09] ( 8, 5 ) ref -> [rbp-0x50] this class-hnd single-def <System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]>
-; V01 arg1 [V01,T08] ( 8, 6 ) ref -> [rbp-0x58] class-hnd single-def <System.Nullable`1[int][]>
+; V00 this [V00,T09] ( 8, 5 ) ref -> r15 this class-hnd single-def <System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]>
+; V01 arg1 [V01,T08] ( 8, 6 ) ref -> rbx class-hnd single-def <System.Nullable`1[int][]>
; V02 arg2 [V02,T15] ( 3, 2.50) ubyte -> r14 single-def
; V03 loc0 [V03,T13] ( 8, 5 ) int -> r12
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V05 loc2 [V05,T24] ( 4, 2.50) ubyte -> [rbp-0x2C]
-; V06 loc3 [V06,T26] ( 3, 2 ) ubyte -> [rbp-0x30]
-; V07 loc4 [V07,T21] ( 4, 3 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V08 loc5 [V08,T22] ( 3, 3 ) ref -> [rbp-0x60] class-hnd spill-single-def <System.Array>
+; V05 loc2 [V05,T25] ( 4, 2.50) ubyte -> [rbp-0x2C]
+; V06 loc3 [V06,T27] ( 3, 2 ) ubyte -> [rbp-0x30]
+; V07 loc4 [V07,T22] ( 4, 3 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
+; V08 loc5 [V08,T23] ( 3, 3 ) ref -> [rbp-0x58] class-hnd spill-single-def <System.Array>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T20] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V11 tmp2 [V11,T17] ( 5, 4 ) ref -> [rbp-0x68]
-; V12 tmp3 [V12,T28] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
-; V13 tmp4 [V13,T29] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
-; V14 tmp5 [V14,T30] ( 2, 2 ) int -> rbx "impAppendStmt"
-; V15 tmp6 [V15,T31] ( 2, 2 ) int -> r13 "impAppendStmt"
+; V10 tmp1 [V10,T21] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V11 tmp2 [V11,T17] ( 5, 4 ) ref -> [rbp-0x60]
+; V12 tmp3 [V12,T29] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
+; V13 tmp4 [V13,T30] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
+; V14 tmp5 [V14,T31] ( 2, 2 ) int -> rbx "impAppendStmt"
+; V15 tmp6 [V15,T32] ( 2, 2 ) int -> r13 "impAppendStmt"
;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
-; V19 tmp10 [V19,T37] ( 2, 1 ) int -> rcx
+; V19 tmp10 [V19,T41] ( 2, 1 ) int -> rcx
;* V20 tmp11 [V20 ] ( 0, 0 ) ref -> zero-ref single-def
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
-; V24 tmp15 [V24,T34] ( 3, 1.50) int -> r8
+; V24 tmp15 [V24,T36] ( 3, 1.50) int -> r8
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref single-def
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) ref -> zero-ref single-def
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp26 [V35,T35] ( 3, 1.50) int -> r9
+; V35 tmp26 [V35,T37] ( 3, 1.50) int -> r9
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V37 tmp28 [V37,T18] ( 4, 4 ) byref -> r14 single-def "dup spill"
;* V38 tmp29 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.SharedArrayPoolThreadLocalArray>
-; V39 tmp30 [V39,T27] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
-; V40 tmp31 [V40,T25] ( 4, 2 ) ref -> rax
-; V41 tmp32 [V41,T40] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V39 tmp30 [V39,T28] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V40 tmp31 [V40,T26] ( 4, 2 ) ref -> rax
+; V41 tmp32 [V41,T44] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V45 tmp36 [V45,T36] ( 3, 1.50) ubyte -> rdx "Inline return value spill temp"
-; V46 tmp37 [V46,T14] ( 3, 5 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
-; V47 tmp38 [V47,T01] ( 7, 22.50) int -> rbx "Inline stloc first use temp"
-; V48 tmp39 [V48,T05] ( 4, 12.50) int -> r15 "Inline stloc first use temp"
-; V49 tmp40 [V49,T02] ( 2, 16 ) int -> rbx "dup spill"
+; V45 tmp36 [V45,T38] ( 3, 1.50) ubyte -> rdx "Inline return value spill temp"
+; V46 tmp37 [V46,T14] ( 3, 5 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+; V47 tmp38 [V47,T01] ( 7, 22.50) int -> [rbp-0x3C] "Inline stloc first use temp"
+; V48 tmp39 [V48,T05] ( 4, 12.50) int -> [rbp-0x40] "Inline stloc first use temp"
+; V49 tmp40 [V49,T02] ( 2, 16 ) int -> rax "dup spill"
;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V51 tmp42 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp43 [V52,T07] ( 3, 10 ) ubyte -> [rbp-0x3C] "Inline stloc first use temp"
-; V53 tmp44 [V53,T00] ( 8, 56 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-; V54 tmp45 [V54,T06] ( 3, 10 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
-; V55 tmp46 [V55,T03] ( 5, 14 ) int -> [rbp-0x40] spill-single-def "Inline stloc first use temp"
-; V56 tmp47 [V56,T32] ( 2, 2 ) int -> r8 "Inlining Arg"
-;* V57 tmp48 [V57,T38] ( 0, 0 ) ref -> zero-ref single-def "field V38.Array (fldOffset=0x0)" P-INDEP
-;* V58 tmp49 [V58,T39] ( 0, 0 ) int -> zero-ref "field V38.MillisecondsTimeStamp (fldOffset=0x8)" P-INDEP
-; V59 tmp50 [V59,T23] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V60 tmp51 [V60,T41] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V61 tmp52 [V61,T42] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V62 cse0 [V62,T04] ( 5, 13 ) int -> [rbp-0x44] spill-single-def "CSE #04: aggressive"
-; V63 cse1 [V63,T16] ( 6, 4 ) int -> r13 "CSE #01: moderate"
-; V64 rat0 [V64,T33] ( 2, 2 ) int -> rbx "Spilling to split statement for tree"
-; V65 rat1 [V65,T19] ( 3, 4 ) byref -> rax "TLS field access"
-; V66 rat2 [V66,T11] ( 3, 6 ) long -> rax "TLS access"
-; V67 rat3 [V67,T10] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
-; V68 rat4 [V68,T12] ( 3, 6 ) int -> rax "ReplaceWithLclVar is creating a new local variable"
+; V51 tmp42 [V51,T39] ( 3, 1.50) int -> [rbp-0x44] "Inline return value spill temp"
+; V52 tmp43 [V52,T19] ( 4, 4 ) int -> rcx "dup spill"
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V54 tmp45 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V55 tmp46 [V55,T07] ( 3, 10 ) ubyte -> [rbp-0x48] "Inline stloc first use temp"
+; V56 tmp47 [V56,T00] ( 8, 56 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V57 tmp48 [V57,T06] ( 3, 10 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
+; V58 tmp49 [V58,T03] ( 5, 14 ) int -> [rbp-0x4C] spill-single-def "Inline stloc first use temp"
+; V59 tmp50 [V59,T33] ( 2, 2 ) int -> r8 "Inlining Arg"
+;* V60 tmp51 [V60,T42] ( 0, 0 ) ref -> zero-ref single-def "field V38.Array (fldOffset=0x0)" P-INDEP
+;* V61 tmp52 [V61,T43] ( 0, 0 ) int -> zero-ref "field V38.MillisecondsTimeStamp (fldOffset=0x8)" P-INDEP
+; V62 tmp53 [V62,T24] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V63 tmp54 [V63,T45] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
+; V64 tmp55 [V64,T46] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V65 cse0 [V65,T40] ( 3, 1.50) long -> rax "CSE #04: moderate"
+; V66 cse1 [V66,T04] ( 5, 13 ) int -> [rbp-0x50] spill-single-def "CSE #05: aggressive"
+; V67 cse2 [V67,T16] ( 6, 4 ) int -> r13 "CSE #01: moderate"
+; V68 rat0 [V68,T20] ( 3, 4 ) byref -> rax "TLS field access"
+; V69 rat1 [V69,T11] ( 3, 6 ) long -> rax "TLS access"
+; V70 rat2 [V70,T10] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V71 rat3 [V71,T34] ( 2, 2 ) long -> rax "TLS field access"
+; V72 rat4 [V72,T35] ( 2, 2 ) long -> rax "TLS access"
+; V73 rat5 [V73,T12] ( 3, 6 ) int -> rax "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 88
+; Lcl frame size = 72
G_M35503_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 88
- vzeroupper
- lea rbp, [rsp+0x80]
+ sub rsp, 72
+ lea rbp, [rsp+0x70]
mov r15, rdi
mov rbx, rsi
mov r14d, edx
- ;; size=34 bbWeight=1 PerfScore 8.50
+ ;; size=28 bbWeight=1 PerfScore 7.50
G_M35503_IG02:
test rbx, rbx
- je G_M35503_IG35
+ je G_M35503_IG34
mov r13d, dword ptr [rbx+0x08]
lea edi, [r13-0x01]
or edi, 15
xor r12d, r12d
lzcnt r12d, edi
xor r12d, 31
add r12d, -3
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 17
jle G_M35503_IG31
mov rdi, gword ptr [rax+0x08]
mov eax, 8
mov ecx, eax
shl ecx, 4
add ecx, eax
mov rax, bword ptr [rdi+rcx]
test rax, rax
je G_M35503_IG31
;; size=96 bbWeight=1 PerfScore 20.75
G_M35503_IG03:
mov rax, gword ptr [rax+0x10]
test rax, rax
jne SHORT G_M35503_IG05
;; size=9 bbWeight=1 PerfScore 3.25
G_M35503_IG04:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:InitializeTlsBucketsAndTrimming():System.Buffers.SharedArrayPoolThreadLocalArray[]:this
call [rax]System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:InitializeTlsBucketsAndTrimming():System.Buffers.SharedArrayPoolThreadLocalArray[]:this
;; size=15 bbWeight=0.50 PerfScore 1.75
G_M35503_IG05:
xor ecx, ecx
mov dword ptr [rbp-0x30], 1
- mov gword ptr [rbp-0x68], rax
+ mov gword ptr [rbp-0x60], rax
cmp dword ptr [rax+0x08], r12d
jbe G_M35503_IG25
;; size=23 bbWeight=1 PerfScore 6.25
G_M35503_IG06:
mov dword ptr [rbp-0x2C], 1
test r14b, r14b
je SHORT G_M35503_IG07
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; code for System.Array:Clear(System.Array)
call [rsi]System.Array:Clear(System.Array)
;; size=27 bbWeight=0.50 PerfScore 2.88
G_M35503_IG07:
mov edi, 16
shlx edi, edi, r12d
cmp r13d, edi
- jne G_M35503_IG34
+ jne G_M35503_IG33
mov edi, r12d
shl rdi, 4
- mov rax, gword ptr [rbp-0x68]
+ mov rax, gword ptr [rbp-0x60]
lea r14, bword ptr [rax+rdi+0x10]
mov rax, gword ptr [r14]
- mov gword ptr [rbp-0x60], rax
- mov gword ptr [rbp-0x58], rbx
+ mov gword ptr [rbp-0x58], rax
mov rdi, r14
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
xor edi, edi
mov dword ptr [r14+0x08], edi
- cmp gword ptr [rbp-0x60], 0
- mov rbx, gword ptr [rbp-0x58]
- je SHORT G_M35503_IG11
+ mov r14, gword ptr [rbp-0x58]
+ test r14, r14
+ je SHORT G_M35503_IG09
mov rdi, gword ptr [r15+0x10]
cmp r12d, dword ptr [rdi+0x08]
- jae G_M35503_IG36
+ jae G_M35503_IG35
mov esi, r12d
mov rax, gword ptr [rdi+8*rsi+0x10]
test rax, rax
- jne SHORT G_M35503_IG10
- mov gword ptr [rbp-0x50], r15
+ jne SHORT G_M35503_IG08
mov rdi, r15
mov esi, r12d
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:CreatePerCorePartitions(int):System.Buffers.SharedArrayPoolPartitions:this
call [rax]System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:CreatePerCorePartitions(int):System.Buffers.SharedArrayPoolPartitions:this
- mov gword ptr [rbp-0x58], rbx
- ;; size=127 bbWeight=0.50 PerfScore 15.38
+ ;; size=113 bbWeight=0.50 PerfScore 13.00
G_M35503_IG08:
mov rax, gword ptr [rax+0x08]
- mov gword ptr [rbp-0x70], rax
+ mov gword ptr [rbp-0x68], rax
+ mov rdi, 0xD1FFAB1E
mov rcx, 0xD1FFAB1E ; function address
- ;; size=18 bbWeight=0.50 PerfScore 1.62
+ call rcx
+ 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
+ jne SHORT G_M35503_IG10
+ jmp SHORT G_M35503_IG11
+ ;; size=52 bbWeight=0.50 PerfScore 6.88
G_M35503_IG09:
- call rcx ; Interop+Sys:SchedGetCpu():int
- mov ebx, eax
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- je SHORT G_M35503_IG12
- jmp G_M35503_IG32
- ;; size=24 bbWeight=0.50 PerfScore 4.75
-G_M35503_IG10:
- mov gword ptr [rbp-0x58], rbx
- mov gword ptr [rbp-0x50], r15
- jmp SHORT G_M35503_IG08
- ;; size=10 bbWeight=0.25 PerfScore 1.00
-G_M35503_IG11:
mov ecx, dword ptr [rbp-0x2C]
jmp G_M35503_IG25
;; size=8 bbWeight=0.25 PerfScore 0.75
+G_M35503_IG10:
+ mov eax, ecx
+ sar eax, 16
+ mov edx, eax
+ jmp SHORT G_M35503_IG12
+ ;; size=9 bbWeight=0.50 PerfScore 1.50
+G_M35503_IG11:
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov edx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
G_M35503_IG12:
mov rax, 0xD1FFAB1E ; global ptr
test byte ptr [rax], 1
- je G_M35503_IG33
+ je G_M35503_IG32
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M35503_IG13:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
- mov eax, ebx
+ mov eax, edx
xor edx, edx
div edx:eax, dword ptr [rdi]
- mov ebx, edx
- xor r15d, r15d
- mov r14, gword ptr [rbp-0x70]
- mov eax, dword ptr [r14+0x08]
- mov dword ptr [rbp-0x44], eax
- test eax, eax
+ mov eax, edx
+ xor ecx, ecx
+ mov dword ptr [rbp-0x40], ecx
+ mov rdx, gword ptr [rbp-0x68]
+ mov esi, dword ptr [rdx+0x08]
+ mov dword ptr [rbp-0x50], esi
+ test esi, esi
jle G_M35503_IG22
- ;; size=40 bbWeight=0.50 PerfScore 15.75
+ ;; size=41 bbWeight=0.50 PerfScore 16.25
G_M35503_IG14:
- cmp ebx, eax
- jae G_M35503_IG36
- mov edi, ebx
- mov rcx, gword ptr [r14+8*rdi+0x10]
- mov gword ptr [rbp-0x78], rcx
- cmp byte ptr [rcx], cl
- xor edx, edx
- mov dword ptr [rbp-0x3C], edx
- mov rdi, rcx
+ cmp eax, esi
+ jae G_M35503_IG35
+ mov dword ptr [rbp-0x3C], eax
+ mov edi, eax
+ mov r8, gword ptr [rdx+8*rdi+0x10]
+ mov gword ptr [rbp-0x70], r8
+ cmp byte ptr [r8], r8b
+ xor r9d, r9d
+ mov dword ptr [rbp-0x48], r9d
+ mov rdi, r8
call System.Threading.Monitor:Enter(System.Object)
- mov rax, gword ptr [rbp-0x78]
+ mov rax, gword ptr [rbp-0x70]
mov rdi, gword ptr [rax+0x08]
mov ecx, dword ptr [rax+0x10]
- mov dword ptr [rbp-0x40], ecx
+ mov dword ptr [rbp-0x4C], ecx
cmp dword ptr [rdi+0x08], ecx
jbe SHORT G_M35503_IG17
- ;; size=53 bbWeight=4 PerfScore 80.00
+ ;; size=59 bbWeight=4 PerfScore 84.00
G_M35503_IG15:
test ecx, ecx
jne SHORT G_M35503_IG18
xor esi, esi
mov dword ptr [rax+0x14], esi
;; size=9 bbWeight=2 PerfScore 5.00
G_M35503_IG16:
movsxd rsi, ecx
lea rdi, bword ptr [rdi+8*rsi+0x10]
- mov rsi, gword ptr [rbp-0x60]
+ mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- mov edi, dword ptr [rbp-0x40]
+ mov edi, dword ptr [rbp-0x4C]
inc edi
- mov rax, gword ptr [rbp-0x78]
+ mov rax, gword ptr [rbp-0x70]
mov dword ptr [rax+0x10], edi
- mov dword ptr [rbp-0x3C], 1
- ;; size=36 bbWeight=2 PerfScore 15.00
+ mov dword ptr [rbp-0x48], 1
+ ;; size=35 bbWeight=2 PerfScore 13.50
G_M35503_IG17:
mov rdi, rax
call System.Threading.Monitor:Exit(System.Object)
- cmp dword ptr [rbp-0x3C], 0
+ cmp dword ptr [rbp-0x48], 0
je SHORT G_M35503_IG19
jmp SHORT G_M35503_IG23
;; size=16 bbWeight=4 PerfScore 25.00
G_M35503_IG18:
jmp SHORT G_M35503_IG16
;; size=2 bbWeight=1 PerfScore 2.00
G_M35503_IG19:
- inc ebx
- mov edi, dword ptr [rbp-0x44]
- cmp edi, ebx
+ mov eax, dword ptr [rbp-0x3C]
+ inc eax
+ mov edi, eax
+ mov esi, dword ptr [rbp-0x50]
+ cmp esi, edi
jne SHORT G_M35503_IG21
- ;; size=9 bbWeight=4 PerfScore 10.00
+ ;; size=14 bbWeight=4 PerfScore 15.00
G_M35503_IG20:
- xor ebx, ebx
+ xor edi, edi
;; size=2 bbWeight=2 PerfScore 0.50
G_M35503_IG21:
- inc r15d
- cmp edi, r15d
+ mov ecx, dword ptr [rbp-0x40]
+ inc ecx
+ cmp esi, ecx
+ mov dword ptr [rbp-0x40], ecx
mov eax, edi
+ mov rdx, gword ptr [rbp-0x68]
jg G_M35503_IG14
- ;; size=14 bbWeight=4 PerfScore 7.00
+ ;; size=22 bbWeight=4 PerfScore 19.00
G_M35503_IG22:
xor edx, edx
jmp SHORT G_M35503_IG24
;; size=4 bbWeight=0.50 PerfScore 1.12
G_M35503_IG23:
mov edx, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M35503_IG24:
mov dword ptr [rbp-0x30], edx
mov ecx, dword ptr [rbp-0x2C]
- mov rbx, gword ptr [rbp-0x58]
- mov r15, gword ptr [rbp-0x50]
- ;; size=14 bbWeight=0.50 PerfScore 2.00
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
G_M35503_IG25:
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
cmp byte ptr [r14+0x9D], 0
je G_M35503_IG29
;; size=27 bbWeight=1 PerfScore 6.25
G_M35503_IG26:
test r13d, r13d
mov dword ptr [rbp-0x2C], ecx
je G_M35503_IG29
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov dword ptr [rbp-0x34], eax
mov dword ptr [rbp-0x38], r13d
cmp byte ptr [r15], r15b
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov r8d, eax
mov rdi, r14
mov edx, dword ptr [rbp-0x34]
mov ecx, dword ptr [rbp-0x38]
mov esi, 3
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this
call [rax]System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this
mov eax, dword ptr [rbp-0x2C]
test eax, dword ptr [rbp-0x30]
jne SHORT G_M35503_IG29
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ebx, eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
cmp dword ptr [rbp-0x2C], 0
je SHORT G_M35503_IG27
mov r8d, r12d
xor r9d, r9d
jmp SHORT G_M35503_IG28
;; size=109 bbWeight=0.50 PerfScore 14.12
G_M35503_IG27:
mov r8d, -1
mov r9d, 1
;; size=12 bbWeight=0.50 PerfScore 0.25
G_M35503_IG28:
mov rdi, r14
mov esi, ebx
mov edx, r13d
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferDropped(int,int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferDropped(int,int,int,int,int):this
;; size=20 bbWeight=0.50 PerfScore 2.00
G_M35503_IG29:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M35503_IG30:
- add rsp, 88
+ add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M35503_IG31:
mov edi, 17
call CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
jmp G_M35503_IG03
;; size=15 bbWeight=0 PerfScore 0.00
G_M35503_IG32:
- call CORINFO_HELP_POLL_GC
- jmp G_M35503_IG12
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M35503_IG33:
+ mov dword ptr [rbp-0x44], edx
mov rdi, 0xD1FFAB1E ; System.Buffers.SharedArrayPoolStatics
call CORINFO_HELP_GET_NONGCSTATIC_BASE
+ mov edx, dword ptr [rbp-0x44]
jmp G_M35503_IG13
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M35503_IG34:
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M35503_IG33:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_ArgumentException_BufferNotFromPool():System.String
call [rax]System.SR:get_ArgumentException_BufferNotFromPool():System.String
mov r15, rax
mov edi, 987
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
-G_M35503_IG35:
+G_M35503_IG34:
mov edi, 2
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
-G_M35503_IG36:
+G_M35503_IG35:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 950, prolog size 34, PerfScore 259.62, instruction count 244, allocated bytes for code 950 (MethodHash=a04e7550) for method System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:Return(System.Nullable`1[int][],ubyte):this (FullOpts)
+; Total bytes of code 960, prolog size 28, PerfScore 278.00, instruction count 253, allocated bytes for code 960 (MethodHash=a04e7550) for method System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:Return(System.Nullable`1[int][],ubyte):this (FullOpts)
10 (1.05 % of base) - System.Buffers.SharedArrayPool`1[System.Numerics.Vector`1[float]]:Return(System.Numerics.Vector`1[float][],ubyte):this
; Assembly listing for method System.Buffers.SharedArrayPool`1[System.Numerics.Vector`1[float]]:Return(System.Numerics.Vector`1[float][],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; 12 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T09] ( 8, 5 ) ref -> [rbp-0x50] this class-hnd single-def <System.Buffers.SharedArrayPool`1[System.Numerics.Vector`1[float]]>
-; V01 arg1 [V01,T08] ( 8, 6 ) ref -> [rbp-0x58] class-hnd single-def <System.Numerics.Vector`1[float][]>
+; V00 this [V00,T09] ( 8, 5 ) ref -> r15 this class-hnd single-def <System.Buffers.SharedArrayPool`1[System.Numerics.Vector`1[float]]>
+; V01 arg1 [V01,T08] ( 8, 6 ) ref -> rbx class-hnd single-def <System.Numerics.Vector`1[float][]>
; V02 arg2 [V02,T15] ( 3, 2.50) ubyte -> r14 single-def
; V03 loc0 [V03,T13] ( 8, 5 ) int -> r12
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V05 loc2 [V05,T24] ( 4, 2.50) ubyte -> [rbp-0x2C]
-; V06 loc3 [V06,T26] ( 3, 2 ) ubyte -> [rbp-0x30]
-; V07 loc4 [V07,T21] ( 4, 3 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V08 loc5 [V08,T22] ( 3, 3 ) ref -> [rbp-0x60] class-hnd spill-single-def <System.Array>
+; V05 loc2 [V05,T25] ( 4, 2.50) ubyte -> [rbp-0x2C]
+; V06 loc3 [V06,T27] ( 3, 2 ) ubyte -> [rbp-0x30]
+; V07 loc4 [V07,T22] ( 4, 3 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
+; V08 loc5 [V08,T23] ( 3, 3 ) ref -> [rbp-0x58] class-hnd spill-single-def <System.Array>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T20] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V11 tmp2 [V11,T17] ( 5, 4 ) ref -> [rbp-0x68]
-; V12 tmp3 [V12,T28] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
-; V13 tmp4 [V13,T29] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
-; V14 tmp5 [V14,T30] ( 2, 2 ) int -> rbx "impAppendStmt"
-; V15 tmp6 [V15,T31] ( 2, 2 ) int -> r13 "impAppendStmt"
+; V10 tmp1 [V10,T21] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V11 tmp2 [V11,T17] ( 5, 4 ) ref -> [rbp-0x60]
+; V12 tmp3 [V12,T29] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
+; V13 tmp4 [V13,T30] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
+; V14 tmp5 [V14,T31] ( 2, 2 ) int -> rbx "impAppendStmt"
+; V15 tmp6 [V15,T32] ( 2, 2 ) int -> r13 "impAppendStmt"
;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
-; V19 tmp10 [V19,T37] ( 2, 1 ) int -> rcx
+; V19 tmp10 [V19,T41] ( 2, 1 ) int -> rcx
;* V20 tmp11 [V20 ] ( 0, 0 ) ref -> zero-ref single-def
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
-; V24 tmp15 [V24,T34] ( 3, 1.50) int -> r8
+; V24 tmp15 [V24,T36] ( 3, 1.50) int -> r8
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref single-def
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) ref -> zero-ref single-def
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp26 [V35,T35] ( 3, 1.50) int -> r9
+; V35 tmp26 [V35,T37] ( 3, 1.50) int -> r9
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V37 tmp28 [V37,T18] ( 4, 4 ) byref -> r14 single-def "dup spill"
;* V38 tmp29 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.SharedArrayPoolThreadLocalArray>
-; V39 tmp30 [V39,T27] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
-; V40 tmp31 [V40,T25] ( 4, 2 ) ref -> rax
-; V41 tmp32 [V41,T40] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V39 tmp30 [V39,T28] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V40 tmp31 [V40,T26] ( 4, 2 ) ref -> rax
+; V41 tmp32 [V41,T44] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V45 tmp36 [V45,T36] ( 3, 1.50) ubyte -> rdx "Inline return value spill temp"
-; V46 tmp37 [V46,T14] ( 3, 5 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
-; V47 tmp38 [V47,T01] ( 7, 22.50) int -> rbx "Inline stloc first use temp"
-; V48 tmp39 [V48,T05] ( 4, 12.50) int -> r15 "Inline stloc first use temp"
-; V49 tmp40 [V49,T02] ( 2, 16 ) int -> rbx "dup spill"
+; V45 tmp36 [V45,T38] ( 3, 1.50) ubyte -> rdx "Inline return value spill temp"
+; V46 tmp37 [V46,T14] ( 3, 5 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+; V47 tmp38 [V47,T01] ( 7, 22.50) int -> [rbp-0x3C] "Inline stloc first use temp"
+; V48 tmp39 [V48,T05] ( 4, 12.50) int -> [rbp-0x40] "Inline stloc first use temp"
+; V49 tmp40 [V49,T02] ( 2, 16 ) int -> rax "dup spill"
;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V51 tmp42 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp43 [V52,T07] ( 3, 10 ) ubyte -> [rbp-0x3C] "Inline stloc first use temp"
-; V53 tmp44 [V53,T00] ( 8, 56 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-; V54 tmp45 [V54,T06] ( 3, 10 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
-; V55 tmp46 [V55,T03] ( 5, 14 ) int -> [rbp-0x40] spill-single-def "Inline stloc first use temp"
-; V56 tmp47 [V56,T32] ( 2, 2 ) int -> r8 "Inlining Arg"
-;* V57 tmp48 [V57,T38] ( 0, 0 ) ref -> zero-ref single-def "field V38.Array (fldOffset=0x0)" P-INDEP
-;* V58 tmp49 [V58,T39] ( 0, 0 ) int -> zero-ref "field V38.MillisecondsTimeStamp (fldOffset=0x8)" P-INDEP
-; V59 tmp50 [V59,T23] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V60 tmp51 [V60,T41] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V61 tmp52 [V61,T42] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V62 cse0 [V62,T04] ( 5, 13 ) int -> [rbp-0x44] spill-single-def "CSE #04: aggressive"
-; V63 cse1 [V63,T16] ( 6, 4 ) int -> r13 "CSE #01: moderate"
-; V64 rat0 [V64,T33] ( 2, 2 ) int -> rbx "Spilling to split statement for tree"
-; V65 rat1 [V65,T19] ( 3, 4 ) byref -> rax "TLS field access"
-; V66 rat2 [V66,T11] ( 3, 6 ) long -> rax "TLS access"
-; V67 rat3 [V67,T10] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
-; V68 rat4 [V68,T12] ( 3, 6 ) int -> rax "ReplaceWithLclVar is creating a new local variable"
+; V51 tmp42 [V51,T39] ( 3, 1.50) int -> [rbp-0x44] "Inline return value spill temp"
+; V52 tmp43 [V52,T19] ( 4, 4 ) int -> rcx "dup spill"
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V54 tmp45 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V55 tmp46 [V55,T07] ( 3, 10 ) ubyte -> [rbp-0x48] "Inline stloc first use temp"
+; V56 tmp47 [V56,T00] ( 8, 56 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V57 tmp48 [V57,T06] ( 3, 10 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
+; V58 tmp49 [V58,T03] ( 5, 14 ) int -> [rbp-0x4C] spill-single-def "Inline stloc first use temp"
+; V59 tmp50 [V59,T33] ( 2, 2 ) int -> r8 "Inlining Arg"
+;* V60 tmp51 [V60,T42] ( 0, 0 ) ref -> zero-ref single-def "field V38.Array (fldOffset=0x0)" P-INDEP
+;* V61 tmp52 [V61,T43] ( 0, 0 ) int -> zero-ref "field V38.MillisecondsTimeStamp (fldOffset=0x8)" P-INDEP
+; V62 tmp53 [V62,T24] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V63 tmp54 [V63,T45] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
+; V64 tmp55 [V64,T46] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V65 cse0 [V65,T40] ( 3, 1.50) long -> rax "CSE #04: moderate"
+; V66 cse1 [V66,T04] ( 5, 13 ) int -> [rbp-0x50] spill-single-def "CSE #05: aggressive"
+; V67 cse2 [V67,T16] ( 6, 4 ) int -> r13 "CSE #01: moderate"
+; V68 rat0 [V68,T20] ( 3, 4 ) byref -> rax "TLS field access"
+; V69 rat1 [V69,T11] ( 3, 6 ) long -> rax "TLS access"
+; V70 rat2 [V70,T10] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V71 rat3 [V71,T34] ( 2, 2 ) long -> rax "TLS field access"
+; V72 rat4 [V72,T35] ( 2, 2 ) long -> rax "TLS access"
+; V73 rat5 [V73,T12] ( 3, 6 ) int -> rax "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 88
+; Lcl frame size = 72
G_M39247_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 88
- vzeroupper
- lea rbp, [rsp+0x80]
+ sub rsp, 72
+ lea rbp, [rsp+0x70]
mov r15, rdi
mov rbx, rsi
mov r14d, edx
- ;; size=34 bbWeight=1 PerfScore 8.50
+ ;; size=28 bbWeight=1 PerfScore 7.50
G_M39247_IG02:
test rbx, rbx
- je G_M39247_IG35
+ je G_M39247_IG34
mov r13d, dword ptr [rbx+0x08]
lea edi, [r13-0x01]
or edi, 15
xor r12d, r12d
lzcnt r12d, edi
xor r12d, 31
add r12d, -3
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 15
jle G_M39247_IG31
mov rdi, gword ptr [rax+0x08]
mov eax, 8
mov ecx, eax
shl ecx, 4
sub ecx, eax
mov rax, bword ptr [rdi+rcx]
test rax, rax
je G_M39247_IG31
;; size=96 bbWeight=1 PerfScore 20.75
G_M39247_IG03:
mov rax, gword ptr [rax+0x10]
test rax, rax
jne SHORT G_M39247_IG05
;; size=9 bbWeight=1 PerfScore 3.25
G_M39247_IG04:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[System.Numerics.Vector`1[float]]:InitializeTlsBucketsAndTrimming():System.Buffers.SharedArrayPoolThreadLocalArray[]:this
call [rax]System.Buffers.SharedArrayPool`1[System.Numerics.Vector`1[float]]:InitializeTlsBucketsAndTrimming():System.Buffers.SharedArrayPoolThreadLocalArray[]:this
;; size=15 bbWeight=0.50 PerfScore 1.75
G_M39247_IG05:
xor ecx, ecx
mov dword ptr [rbp-0x30], 1
- mov gword ptr [rbp-0x68], rax
+ mov gword ptr [rbp-0x60], rax
cmp dword ptr [rax+0x08], r12d
jbe G_M39247_IG25
;; size=23 bbWeight=1 PerfScore 6.25
G_M39247_IG06:
mov dword ptr [rbp-0x2C], 1
test r14b, r14b
je SHORT G_M39247_IG07
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; code for System.Array:Clear(System.Array)
call [rsi]System.Array:Clear(System.Array)
;; size=27 bbWeight=0.50 PerfScore 2.88
G_M39247_IG07:
mov edi, 16
shlx edi, edi, r12d
cmp r13d, edi
- jne G_M39247_IG34
+ jne G_M39247_IG33
mov edi, r12d
shl rdi, 4
- mov rax, gword ptr [rbp-0x68]
+ mov rax, gword ptr [rbp-0x60]
lea r14, bword ptr [rax+rdi+0x10]
mov rax, gword ptr [r14]
- mov gword ptr [rbp-0x60], rax
- mov gword ptr [rbp-0x58], rbx
+ mov gword ptr [rbp-0x58], rax
mov rdi, r14
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
xor edi, edi
mov dword ptr [r14+0x08], edi
- cmp gword ptr [rbp-0x60], 0
- mov rbx, gword ptr [rbp-0x58]
- je SHORT G_M39247_IG11
+ mov r14, gword ptr [rbp-0x58]
+ test r14, r14
+ je SHORT G_M39247_IG09
mov rdi, gword ptr [r15+0x10]
cmp r12d, dword ptr [rdi+0x08]
- jae G_M39247_IG36
+ jae G_M39247_IG35
mov esi, r12d
mov rax, gword ptr [rdi+8*rsi+0x10]
test rax, rax
- jne SHORT G_M39247_IG10
- mov gword ptr [rbp-0x50], r15
+ jne SHORT G_M39247_IG08
mov rdi, r15
mov esi, r12d
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[System.Numerics.Vector`1[float]]:CreatePerCorePartitions(int):System.Buffers.SharedArrayPoolPartitions:this
call [rax]System.Buffers.SharedArrayPool`1[System.Numerics.Vector`1[float]]:CreatePerCorePartitions(int):System.Buffers.SharedArrayPoolPartitions:this
- mov gword ptr [rbp-0x58], rbx
- ;; size=127 bbWeight=0.50 PerfScore 15.38
+ ;; size=113 bbWeight=0.50 PerfScore 13.00
G_M39247_IG08:
mov rax, gword ptr [rax+0x08]
- mov gword ptr [rbp-0x70], rax
+ mov gword ptr [rbp-0x68], rax
+ mov rdi, 0xD1FFAB1E
mov rcx, 0xD1FFAB1E ; function address
- ;; size=18 bbWeight=0.50 PerfScore 1.62
+ call rcx
+ 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
+ jne SHORT G_M39247_IG10
+ jmp SHORT G_M39247_IG11
+ ;; size=52 bbWeight=0.50 PerfScore 6.88
G_M39247_IG09:
- call rcx ; Interop+Sys:SchedGetCpu():int
- mov ebx, eax
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- je SHORT G_M39247_IG12
- jmp G_M39247_IG32
- ;; size=24 bbWeight=0.50 PerfScore 4.75
-G_M39247_IG10:
- mov gword ptr [rbp-0x58], rbx
- mov gword ptr [rbp-0x50], r15
- jmp SHORT G_M39247_IG08
- ;; size=10 bbWeight=0.25 PerfScore 1.00
-G_M39247_IG11:
mov ecx, dword ptr [rbp-0x2C]
jmp G_M39247_IG25
;; size=8 bbWeight=0.25 PerfScore 0.75
+G_M39247_IG10:
+ mov eax, ecx
+ sar eax, 16
+ mov edx, eax
+ jmp SHORT G_M39247_IG12
+ ;; size=9 bbWeight=0.50 PerfScore 1.50
+G_M39247_IG11:
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov edx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
G_M39247_IG12:
mov rax, 0xD1FFAB1E ; global ptr
test byte ptr [rax], 1
- je G_M39247_IG33
+ je G_M39247_IG32
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M39247_IG13:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
- mov eax, ebx
+ mov eax, edx
xor edx, edx
div edx:eax, dword ptr [rdi]
- mov ebx, edx
- xor r15d, r15d
- mov r14, gword ptr [rbp-0x70]
- mov eax, dword ptr [r14+0x08]
- mov dword ptr [rbp-0x44], eax
- test eax, eax
+ mov eax, edx
+ xor ecx, ecx
+ mov dword ptr [rbp-0x40], ecx
+ mov rdx, gword ptr [rbp-0x68]
+ mov esi, dword ptr [rdx+0x08]
+ mov dword ptr [rbp-0x50], esi
+ test esi, esi
jle G_M39247_IG22
- ;; size=40 bbWeight=0.50 PerfScore 15.75
+ ;; size=41 bbWeight=0.50 PerfScore 16.25
G_M39247_IG14:
- cmp ebx, eax
- jae G_M39247_IG36
- mov edi, ebx
- mov rcx, gword ptr [r14+8*rdi+0x10]
- mov gword ptr [rbp-0x78], rcx
- cmp byte ptr [rcx], cl
- xor edx, edx
- mov dword ptr [rbp-0x3C], edx
- mov rdi, rcx
+ cmp eax, esi
+ jae G_M39247_IG35
+ mov dword ptr [rbp-0x3C], eax
+ mov edi, eax
+ mov r8, gword ptr [rdx+8*rdi+0x10]
+ mov gword ptr [rbp-0x70], r8
+ cmp byte ptr [r8], r8b
+ xor r9d, r9d
+ mov dword ptr [rbp-0x48], r9d
+ mov rdi, r8
call System.Threading.Monitor:Enter(System.Object)
- mov rax, gword ptr [rbp-0x78]
+ mov rax, gword ptr [rbp-0x70]
mov rdi, gword ptr [rax+0x08]
mov ecx, dword ptr [rax+0x10]
- mov dword ptr [rbp-0x40], ecx
+ mov dword ptr [rbp-0x4C], ecx
cmp dword ptr [rdi+0x08], ecx
jbe SHORT G_M39247_IG17
- ;; size=53 bbWeight=4 PerfScore 80.00
+ ;; size=59 bbWeight=4 PerfScore 84.00
G_M39247_IG15:
test ecx, ecx
jne SHORT G_M39247_IG18
xor esi, esi
mov dword ptr [rax+0x14], esi
;; size=9 bbWeight=2 PerfScore 5.00
G_M39247_IG16:
movsxd rsi, ecx
lea rdi, bword ptr [rdi+8*rsi+0x10]
- mov rsi, gword ptr [rbp-0x60]
+ mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- mov edi, dword ptr [rbp-0x40]
+ mov edi, dword ptr [rbp-0x4C]
inc edi
- mov rax, gword ptr [rbp-0x78]
+ mov rax, gword ptr [rbp-0x70]
mov dword ptr [rax+0x10], edi
- mov dword ptr [rbp-0x3C], 1
- ;; size=36 bbWeight=2 PerfScore 15.00
+ mov dword ptr [rbp-0x48], 1
+ ;; size=35 bbWeight=2 PerfScore 13.50
G_M39247_IG17:
mov rdi, rax
call System.Threading.Monitor:Exit(System.Object)
- cmp dword ptr [rbp-0x3C], 0
+ cmp dword ptr [rbp-0x48], 0
je SHORT G_M39247_IG19
jmp SHORT G_M39247_IG23
;; size=16 bbWeight=4 PerfScore 25.00
G_M39247_IG18:
jmp SHORT G_M39247_IG16
;; size=2 bbWeight=1 PerfScore 2.00
G_M39247_IG19:
- inc ebx
- mov edi, dword ptr [rbp-0x44]
- cmp edi, ebx
+ mov eax, dword ptr [rbp-0x3C]
+ inc eax
+ mov edi, eax
+ mov esi, dword ptr [rbp-0x50]
+ cmp esi, edi
jne SHORT G_M39247_IG21
- ;; size=9 bbWeight=4 PerfScore 10.00
+ ;; size=14 bbWeight=4 PerfScore 15.00
G_M39247_IG20:
- xor ebx, ebx
+ xor edi, edi
;; size=2 bbWeight=2 PerfScore 0.50
G_M39247_IG21:
- inc r15d
- cmp edi, r15d
+ mov ecx, dword ptr [rbp-0x40]
+ inc ecx
+ cmp esi, ecx
+ mov dword ptr [rbp-0x40], ecx
mov eax, edi
+ mov rdx, gword ptr [rbp-0x68]
jg G_M39247_IG14
- ;; size=14 bbWeight=4 PerfScore 7.00
+ ;; size=22 bbWeight=4 PerfScore 19.00
G_M39247_IG22:
xor edx, edx
jmp SHORT G_M39247_IG24
;; size=4 bbWeight=0.50 PerfScore 1.12
G_M39247_IG23:
mov edx, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M39247_IG24:
mov dword ptr [rbp-0x30], edx
mov ecx, dword ptr [rbp-0x2C]
- mov rbx, gword ptr [rbp-0x58]
- mov r15, gword ptr [rbp-0x50]
- ;; size=14 bbWeight=0.50 PerfScore 2.00
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
G_M39247_IG25:
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
cmp byte ptr [r14+0x9D], 0
je G_M39247_IG29
;; size=27 bbWeight=1 PerfScore 6.25
G_M39247_IG26:
test r13d, r13d
mov dword ptr [rbp-0x2C], ecx
je G_M39247_IG29
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov dword ptr [rbp-0x34], eax
mov dword ptr [rbp-0x38], r13d
cmp byte ptr [r15], r15b
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov r8d, eax
mov rdi, r14
mov edx, dword ptr [rbp-0x34]
mov ecx, dword ptr [rbp-0x38]
mov esi, 3
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this
call [rax]System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this
mov eax, dword ptr [rbp-0x2C]
test eax, dword ptr [rbp-0x30]
jne SHORT G_M39247_IG29
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ebx, eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
cmp dword ptr [rbp-0x2C], 0
je SHORT G_M39247_IG27
mov r8d, r12d
xor r9d, r9d
jmp SHORT G_M39247_IG28
;; size=109 bbWeight=0.50 PerfScore 14.12
G_M39247_IG27:
mov r8d, -1
mov r9d, 1
;; size=12 bbWeight=0.50 PerfScore 0.25
G_M39247_IG28:
mov rdi, r14
mov esi, ebx
mov edx, r13d
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferDropped(int,int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferDropped(int,int,int,int,int):this
;; size=20 bbWeight=0.50 PerfScore 2.00
G_M39247_IG29:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M39247_IG30:
- add rsp, 88
+ add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M39247_IG31:
mov edi, 15
call CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
jmp G_M39247_IG03
;; size=15 bbWeight=0 PerfScore 0.00
G_M39247_IG32:
- call CORINFO_HELP_POLL_GC
- jmp G_M39247_IG12
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M39247_IG33:
+ mov dword ptr [rbp-0x44], edx
mov rdi, 0xD1FFAB1E ; System.Buffers.SharedArrayPoolStatics
call CORINFO_HELP_GET_NONGCSTATIC_BASE
+ mov edx, dword ptr [rbp-0x44]
jmp G_M39247_IG13
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M39247_IG34:
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M39247_IG33:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_ArgumentException_BufferNotFromPool():System.String
call [rax]System.SR:get_ArgumentException_BufferNotFromPool():System.String
mov r15, rax
mov edi, 987
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
-G_M39247_IG35:
+G_M39247_IG34:
mov edi, 2
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
-G_M39247_IG36:
+G_M39247_IG35:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 950, prolog size 34, PerfScore 259.62, instruction count 244, allocated bytes for code 950 (MethodHash=7c1266b0) for method System.Buffers.SharedArrayPool`1[System.Numerics.Vector`1[float]]:Return(System.Numerics.Vector`1[float][],ubyte):this (FullOpts)
+; Total bytes of code 960, prolog size 28, PerfScore 278.00, instruction count 253, allocated bytes for code 960 (MethodHash=7c1266b0) for method System.Buffers.SharedArrayPool`1[System.Numerics.Vector`1[float]]:Return(System.Numerics.Vector`1[float][],ubyte):this (FullOpts)
10 (1.07 % of base) - System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this
; Assembly listing for method System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],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; 12 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T09] ( 8, 5 ) ref -> [rbp-0x50] this class-hnd single-def <System.Buffers.SharedArrayPool`1[ushort]>
-; V01 arg1 [V01,T08] ( 8, 6 ) ref -> [rbp-0x58] class-hnd single-def <ushort[]>
+; V00 this [V00,T09] ( 8, 5 ) ref -> r15 this class-hnd single-def <System.Buffers.SharedArrayPool`1[ushort]>
+; V01 arg1 [V01,T08] ( 8, 6 ) ref -> rbx class-hnd single-def <ushort[]>
; V02 arg2 [V02,T14] ( 3, 2.50) ubyte -> r14 single-def
; V03 loc0 [V03,T12] ( 8, 5 ) int -> r12
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V05 loc2 [V05,T23] ( 4, 2.50) ubyte -> [rbp-0x2C]
-; V06 loc3 [V06,T25] ( 3, 2 ) ubyte -> [rbp-0x30]
-; V07 loc4 [V07,T20] ( 4, 3 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V08 loc5 [V08,T21] ( 3, 3 ) ref -> [rbp-0x60] class-hnd spill-single-def <System.Array>
+; V05 loc2 [V05,T24] ( 4, 2.50) ubyte -> [rbp-0x2C]
+; V06 loc3 [V06,T26] ( 3, 2 ) ubyte -> [rbp-0x30]
+; V07 loc4 [V07,T21] ( 4, 3 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
+; V08 loc5 [V08,T22] ( 3, 3 ) ref -> [rbp-0x58] class-hnd spill-single-def <System.Array>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T19] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V11 tmp2 [V11,T16] ( 5, 4 ) ref -> [rbp-0x68]
-; V12 tmp3 [V12,T27] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
-; V13 tmp4 [V13,T28] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
-; V14 tmp5 [V14,T29] ( 2, 2 ) int -> rbx "impAppendStmt"
-; V15 tmp6 [V15,T30] ( 2, 2 ) int -> r13 "impAppendStmt"
+; V10 tmp1 [V10,T20] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V11 tmp2 [V11,T16] ( 5, 4 ) ref -> [rbp-0x60]
+; V12 tmp3 [V12,T28] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
+; V13 tmp4 [V13,T29] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
+; V14 tmp5 [V14,T30] ( 2, 2 ) int -> rbx "impAppendStmt"
+; V15 tmp6 [V15,T31] ( 2, 2 ) int -> r13 "impAppendStmt"
;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
-; V19 tmp10 [V19,T36] ( 2, 1 ) int -> rcx
+; V19 tmp10 [V19,T40] ( 2, 1 ) int -> rcx
;* V20 tmp11 [V20 ] ( 0, 0 ) ref -> zero-ref single-def
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
-; V24 tmp15 [V24,T33] ( 3, 1.50) int -> r8
+; V24 tmp15 [V24,T35] ( 3, 1.50) int -> r8
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref single-def
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) ref -> zero-ref single-def
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp26 [V35,T34] ( 3, 1.50) int -> r9
+; V35 tmp26 [V35,T36] ( 3, 1.50) int -> r9
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V37 tmp28 [V37,T17] ( 4, 4 ) byref -> r14 single-def "dup spill"
;* V38 tmp29 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.SharedArrayPoolThreadLocalArray>
-; V39 tmp30 [V39,T26] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
-; V40 tmp31 [V40,T24] ( 4, 2 ) ref -> rax
-; V41 tmp32 [V41,T39] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V39 tmp30 [V39,T27] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V40 tmp31 [V40,T25] ( 4, 2 ) ref -> rax
+; V41 tmp32 [V41,T43] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V45 tmp36 [V45,T35] ( 3, 1.50) ubyte -> rdx "Inline return value spill temp"
-; V46 tmp37 [V46,T13] ( 3, 5 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
-; V47 tmp38 [V47,T01] ( 7, 22.50) int -> rbx "Inline stloc first use temp"
-; V48 tmp39 [V48,T05] ( 4, 12.50) int -> r15 "Inline stloc first use temp"
-; V49 tmp40 [V49,T02] ( 2, 16 ) int -> rbx "dup spill"
+; V45 tmp36 [V45,T37] ( 3, 1.50) ubyte -> rdx "Inline return value spill temp"
+; V46 tmp37 [V46,T13] ( 3, 5 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+; V47 tmp38 [V47,T01] ( 7, 22.50) int -> [rbp-0x3C] "Inline stloc first use temp"
+; V48 tmp39 [V48,T05] ( 4, 12.50) int -> [rbp-0x40] "Inline stloc first use temp"
+; V49 tmp40 [V49,T02] ( 2, 16 ) int -> rax "dup spill"
;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V51 tmp42 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp43 [V52,T07] ( 3, 10 ) ubyte -> [rbp-0x3C] "Inline stloc first use temp"
-; V53 tmp44 [V53,T00] ( 8, 56 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-; V54 tmp45 [V54,T06] ( 3, 10 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
-; V55 tmp46 [V55,T03] ( 5, 14 ) int -> [rbp-0x40] spill-single-def "Inline stloc first use temp"
-; V56 tmp47 [V56,T31] ( 2, 2 ) int -> r8 "Inlining Arg"
-;* V57 tmp48 [V57,T37] ( 0, 0 ) ref -> zero-ref single-def "field V38.Array (fldOffset=0x0)" P-INDEP
-;* V58 tmp49 [V58,T38] ( 0, 0 ) int -> zero-ref "field V38.MillisecondsTimeStamp (fldOffset=0x8)" P-INDEP
-; V59 tmp50 [V59,T22] ( 3, 3 ) ref -> rdi single-def "arr expr"
-; V60 tmp51 [V60,T40] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V61 tmp52 [V61,T41] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V62 cse0 [V62,T04] ( 5, 13 ) int -> [rbp-0x44] spill-single-def "CSE #04: aggressive"
-; V63 cse1 [V63,T15] ( 6, 4 ) int -> r13 "CSE #01: moderate"
-; V64 rat0 [V64,T32] ( 2, 2 ) int -> rbx "Spilling to split statement for tree"
-; V65 rat1 [V65,T18] ( 3, 4 ) byref -> rax "TLS field access"
-; V66 rat2 [V66,T11] ( 3, 6 ) long -> rax "TLS access"
-; V67 rat3 [V67,T10] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V51 tmp42 [V51,T38] ( 3, 1.50) int -> [rbp-0x44] "Inline return value spill temp"
+; V52 tmp43 [V52,T18] ( 4, 4 ) int -> rcx "dup spill"
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V54 tmp45 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V55 tmp46 [V55,T07] ( 3, 10 ) ubyte -> [rbp-0x48] "Inline stloc first use temp"
+; V56 tmp47 [V56,T00] ( 8, 56 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V57 tmp48 [V57,T06] ( 3, 10 ) ref -> rdi class-hnd "Inline stloc first use temp" <System.Array[]>
+; V58 tmp49 [V58,T03] ( 5, 14 ) int -> [rbp-0x4C] spill-single-def "Inline stloc first use temp"
+; V59 tmp50 [V59,T32] ( 2, 2 ) int -> r8 "Inlining Arg"
+;* V60 tmp51 [V60,T41] ( 0, 0 ) ref -> zero-ref single-def "field V38.Array (fldOffset=0x0)" P-INDEP
+;* V61 tmp52 [V61,T42] ( 0, 0 ) int -> zero-ref "field V38.MillisecondsTimeStamp (fldOffset=0x8)" P-INDEP
+; V62 tmp53 [V62,T23] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V63 tmp54 [V63,T44] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
+; V64 tmp55 [V64,T45] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V65 cse0 [V65,T39] ( 3, 1.50) long -> rax "CSE #04: moderate"
+; V66 cse1 [V66,T04] ( 5, 13 ) int -> [rbp-0x50] spill-single-def "CSE #05: aggressive"
+; V67 cse2 [V67,T15] ( 6, 4 ) int -> r13 "CSE #01: moderate"
+; V68 rat0 [V68,T19] ( 3, 4 ) byref -> rax "TLS field access"
+; V69 rat1 [V69,T11] ( 3, 6 ) long -> rax "TLS access"
+; V70 rat2 [V70,T10] ( 3, 6 ) byref -> rax "ThreadStaticBlockBase access"
+; V71 rat3 [V71,T33] ( 2, 2 ) long -> rax "TLS field access"
+; V72 rat4 [V72,T34] ( 2, 2 ) long -> rax "TLS access"
;
-; Lcl frame size = 88
+; Lcl frame size = 72
G_M2831_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 88
- vzeroupper
- lea rbp, [rsp+0x80]
+ sub rsp, 72
+ lea rbp, [rsp+0x70]
mov r15, rdi
mov rbx, rsi
mov r14d, edx
- ;; size=34 bbWeight=1 PerfScore 8.50
+ ;; size=28 bbWeight=1 PerfScore 7.50
G_M2831_IG02:
test rbx, rbx
- je G_M2831_IG35
+ je G_M2831_IG34
mov r13d, dword ptr [rbx+0x08]
lea edi, [r13-0x01]
or edi, 15
xor r12d, r12d
lzcnt r12d, edi
xor r12d, 31
add r12d, -3
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
cmp dword ptr [rax], 8
jle G_M2831_IG31
mov rdi, gword ptr [rax+0x08]
mov rax, bword ptr [rdi+0x40]
test rax, rax
je G_M2831_IG31
;; size=84 bbWeight=1 PerfScore 19.50
G_M2831_IG03:
mov rax, gword ptr [rax+0x10]
test rax, rax
jne SHORT G_M2831_IG05
;; size=9 bbWeight=1 PerfScore 3.25
G_M2831_IG04:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ushort]:InitializeTlsBucketsAndTrimming():System.Buffers.SharedArrayPoolThreadLocalArray[]:this
call [rax]System.Buffers.SharedArrayPool`1[ushort]:InitializeTlsBucketsAndTrimming():System.Buffers.SharedArrayPoolThreadLocalArray[]:this
;; size=15 bbWeight=0.50 PerfScore 1.75
G_M2831_IG05:
xor ecx, ecx
mov dword ptr [rbp-0x30], 1
- mov gword ptr [rbp-0x68], rax
+ mov gword ptr [rbp-0x60], rax
cmp dword ptr [rax+0x08], r12d
jbe G_M2831_IG25
;; size=23 bbWeight=1 PerfScore 6.25
G_M2831_IG06:
mov dword ptr [rbp-0x2C], 1
test r14b, r14b
je SHORT G_M2831_IG07
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; code for System.Array:Clear(System.Array)
call [rsi]System.Array:Clear(System.Array)
;; size=27 bbWeight=0.50 PerfScore 2.88
G_M2831_IG07:
mov edi, 16
shlx edi, edi, r12d
cmp r13d, edi
- jne G_M2831_IG34
+ jne G_M2831_IG33
mov edi, r12d
shl rdi, 4
- mov rax, gword ptr [rbp-0x68]
+ mov rax, gword ptr [rbp-0x60]
lea r14, bword ptr [rax+rdi+0x10]
mov rax, gword ptr [r14]
- mov gword ptr [rbp-0x60], rax
- mov gword ptr [rbp-0x58], rbx
+ mov gword ptr [rbp-0x58], rax
mov rdi, r14
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
xor edi, edi
mov dword ptr [r14+0x08], edi
- cmp gword ptr [rbp-0x60], 0
- mov rbx, gword ptr [rbp-0x58]
- je SHORT G_M2831_IG11
+ mov r14, gword ptr [rbp-0x58]
+ test r14, r14
+ je SHORT G_M2831_IG09
mov rdi, gword ptr [r15+0x10]
cmp r12d, dword ptr [rdi+0x08]
- jae G_M2831_IG36
+ jae G_M2831_IG35
mov esi, r12d
mov rax, gword ptr [rdi+8*rsi+0x10]
test rax, rax
- jne SHORT G_M2831_IG10
- mov gword ptr [rbp-0x50], r15
+ jne SHORT G_M2831_IG08
mov rdi, r15
mov esi, r12d
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ushort]:CreatePerCorePartitions(int):System.Buffers.SharedArrayPoolPartitions:this
call [rax]System.Buffers.SharedArrayPool`1[ushort]:CreatePerCorePartitions(int):System.Buffers.SharedArrayPoolPartitions:this
- mov gword ptr [rbp-0x58], rbx
- ;; size=127 bbWeight=0.50 PerfScore 15.38
+ ;; size=113 bbWeight=0.50 PerfScore 13.00
G_M2831_IG08:
mov rax, gword ptr [rax+0x08]
- mov gword ptr [rbp-0x70], rax
+ mov gword ptr [rbp-0x68], rax
+ mov rdi, 0xD1FFAB1E
mov rcx, 0xD1FFAB1E ; function address
- ;; size=18 bbWeight=0.50 PerfScore 1.62
+ call rcx
+ 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
+ jne SHORT G_M2831_IG10
+ jmp SHORT G_M2831_IG11
+ ;; size=52 bbWeight=0.50 PerfScore 6.88
G_M2831_IG09:
- call rcx ; Interop+Sys:SchedGetCpu():int
- mov ebx, eax
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- je SHORT G_M2831_IG12
- jmp G_M2831_IG32
- ;; size=24 bbWeight=0.50 PerfScore 4.75
-G_M2831_IG10:
- mov gword ptr [rbp-0x58], rbx
- mov gword ptr [rbp-0x50], r15
- jmp SHORT G_M2831_IG08
- ;; size=10 bbWeight=0.25 PerfScore 1.00
-G_M2831_IG11:
mov ecx, dword ptr [rbp-0x2C]
jmp G_M2831_IG25
;; size=8 bbWeight=0.25 PerfScore 0.75
+G_M2831_IG10:
+ mov eax, ecx
+ sar eax, 16
+ mov edx, eax
+ jmp SHORT G_M2831_IG12
+ ;; size=9 bbWeight=0.50 PerfScore 1.50
+G_M2831_IG11:
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ mov edx, eax
+ ;; size=14 bbWeight=0.50 PerfScore 1.75
G_M2831_IG12:
mov rax, 0xD1FFAB1E ; global ptr
test byte ptr [rax], 1
- je G_M2831_IG33
+ je G_M2831_IG32
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M2831_IG13:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
- mov eax, ebx
+ mov eax, edx
xor edx, edx
div edx:eax, dword ptr [rdi]
- mov ebx, edx
- xor r15d, r15d
- mov r14, gword ptr [rbp-0x70]
- mov eax, dword ptr [r14+0x08]
- mov dword ptr [rbp-0x44], eax
- test eax, eax
+ mov eax, edx
+ xor ecx, ecx
+ mov dword ptr [rbp-0x40], ecx
+ mov rdx, gword ptr [rbp-0x68]
+ mov esi, dword ptr [rdx+0x08]
+ mov dword ptr [rbp-0x50], esi
+ test esi, esi
jle G_M2831_IG22
- ;; size=40 bbWeight=0.50 PerfScore 15.75
+ ;; size=41 bbWeight=0.50 PerfScore 16.25
G_M2831_IG14:
- cmp ebx, eax
- jae G_M2831_IG36
- mov edi, ebx
- mov rcx, gword ptr [r14+8*rdi+0x10]
- mov gword ptr [rbp-0x78], rcx
- cmp byte ptr [rcx], cl
- xor edx, edx
- mov dword ptr [rbp-0x3C], edx
- mov rdi, rcx
+ cmp eax, esi
+ jae G_M2831_IG35
+ mov dword ptr [rbp-0x3C], eax
+ mov edi, eax
+ mov r8, gword ptr [rdx+8*rdi+0x10]
+ mov gword ptr [rbp-0x70], r8
+ cmp byte ptr [r8], r8b
+ xor r9d, r9d
+ mov dword ptr [rbp-0x48], r9d
+ mov rdi, r8
call System.Threading.Monitor:Enter(System.Object)
- mov rax, gword ptr [rbp-0x78]
+ mov rax, gword ptr [rbp-0x70]
mov rdi, gword ptr [rax+0x08]
mov ecx, dword ptr [rax+0x10]
- mov dword ptr [rbp-0x40], ecx
+ mov dword ptr [rbp-0x4C], ecx
cmp dword ptr [rdi+0x08], ecx
jbe SHORT G_M2831_IG17
- ;; size=53 bbWeight=4 PerfScore 80.00
+ ;; size=59 bbWeight=4 PerfScore 84.00
G_M2831_IG15:
test ecx, ecx
jne SHORT G_M2831_IG18
xor esi, esi
mov dword ptr [rax+0x14], esi
;; size=9 bbWeight=2 PerfScore 5.00
G_M2831_IG16:
movsxd rsi, ecx
lea rdi, bword ptr [rdi+8*rsi+0x10]
- mov rsi, gword ptr [rbp-0x60]
+ mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- mov edi, dword ptr [rbp-0x40]
+ mov edi, dword ptr [rbp-0x4C]
inc edi
- mov rax, gword ptr [rbp-0x78]
+ mov rax, gword ptr [rbp-0x70]
mov dword ptr [rax+0x10], edi
- mov dword ptr [rbp-0x3C], 1
- ;; size=36 bbWeight=2 PerfScore 15.00
+ mov dword ptr [rbp-0x48], 1
+ ;; size=35 bbWeight=2 PerfScore 13.50
G_M2831_IG17:
mov rdi, rax
call System.Threading.Monitor:Exit(System.Object)
- cmp dword ptr [rbp-0x3C], 0
+ cmp dword ptr [rbp-0x48], 0
je SHORT G_M2831_IG19
jmp SHORT G_M2831_IG23
;; size=16 bbWeight=4 PerfScore 25.00
G_M2831_IG18:
jmp SHORT G_M2831_IG16
;; size=2 bbWeight=1 PerfScore 2.00
G_M2831_IG19:
- inc ebx
- mov edi, dword ptr [rbp-0x44]
- cmp edi, ebx
+ mov eax, dword ptr [rbp-0x3C]
+ inc eax
+ mov edi, eax
+ mov esi, dword ptr [rbp-0x50]
+ cmp esi, edi
jne SHORT G_M2831_IG21
- ;; size=9 bbWeight=4 PerfScore 10.00
+ ;; size=14 bbWeight=4 PerfScore 15.00
G_M2831_IG20:
- xor ebx, ebx
+ xor edi, edi
;; size=2 bbWeight=2 PerfScore 0.50
G_M2831_IG21:
- inc r15d
- cmp edi, r15d
+ mov ecx, dword ptr [rbp-0x40]
+ inc ecx
+ cmp esi, ecx
+ mov dword ptr [rbp-0x40], ecx
mov eax, edi
+ mov rdx, gword ptr [rbp-0x68]
jg G_M2831_IG14
- ;; size=14 bbWeight=4 PerfScore 7.00
+ ;; size=22 bbWeight=4 PerfScore 19.00
G_M2831_IG22:
xor edx, edx
jmp SHORT G_M2831_IG24
;; size=4 bbWeight=0.50 PerfScore 1.12
G_M2831_IG23:
mov edx, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M2831_IG24:
mov dword ptr [rbp-0x30], edx
mov ecx, dword ptr [rbp-0x2C]
- mov rbx, gword ptr [rbp-0x58]
- mov r15, gword ptr [rbp-0x50]
- ;; size=14 bbWeight=0.50 PerfScore 2.00
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
G_M2831_IG25:
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
cmp byte ptr [r14+0x9D], 0
je G_M2831_IG29
;; size=27 bbWeight=1 PerfScore 6.25
G_M2831_IG26:
test r13d, r13d
mov dword ptr [rbp-0x2C], ecx
je G_M2831_IG29
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov dword ptr [rbp-0x34], eax
mov dword ptr [rbp-0x38], r13d
cmp byte ptr [r15], r15b
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov r8d, eax
mov rdi, r14
mov edx, dword ptr [rbp-0x34]
mov ecx, dword ptr [rbp-0x38]
mov esi, 3
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this
call [rax]System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this
mov eax, dword ptr [rbp-0x2C]
test eax, dword ptr [rbp-0x30]
jne SHORT G_M2831_IG29
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ebx, eax
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
cmp dword ptr [rbp-0x2C], 0
je SHORT G_M2831_IG27
mov r8d, r12d
xor r9d, r9d
jmp SHORT G_M2831_IG28
;; size=109 bbWeight=0.50 PerfScore 14.12
G_M2831_IG27:
mov r8d, -1
mov r9d, 1
;; size=12 bbWeight=0.50 PerfScore 0.25
G_M2831_IG28:
mov rdi, r14
mov esi, ebx
mov edx, r13d
mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPoolEventSource:BufferDropped(int,int,int,int,int):this
call [rax]System.Buffers.ArrayPoolEventSource:BufferDropped(int,int,int,int,int):this
;; size=20 bbWeight=0.50 PerfScore 2.00
G_M2831_IG29:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M2831_IG30:
- add rsp, 88
+ add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M2831_IG31:
mov edi, 8
call CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
jmp G_M2831_IG03
;; size=15 bbWeight=0 PerfScore 0.00
G_M2831_IG32:
- call CORINFO_HELP_POLL_GC
- jmp G_M2831_IG12
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M2831_IG33:
+ mov dword ptr [rbp-0x44], edx
mov rdi, 0xD1FFAB1E ; System.Buffers.SharedArrayPoolStatics
call CORINFO_HELP_GET_NONGCSTATIC_BASE
+ mov edx, dword ptr [rbp-0x44]
jmp G_M2831_IG13
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M2831_IG34:
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M2831_IG33:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_ArgumentException_BufferNotFromPool():System.String
call [rax]System.SR:get_ArgumentException_BufferNotFromPool():System.String
mov r15, rax
mov edi, 987
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
-G_M2831_IG35:
+G_M2831_IG34:
mov edi, 2
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
-G_M2831_IG36:
+G_M2831_IG35:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 938, prolog size 34, PerfScore 258.38, instruction count 240, allocated bytes for code 938 (MethodHash=fb8ef4f0) for method System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this (FullOpts)
+; Total bytes of code 948, prolog size 28, PerfScore 276.75, instruction count 249, allocated bytes for code 948 (MethodHash=fb8ef4f0) for method System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this (FullOpts)
2 (0.21 % of base) - System.Buffers.SharedArrayPool`1[System.__Canon]:Rent(int):System.__Canon[]:this
; Assembly listing for method System.Buffers.SharedArrayPool`1[System.__Canon]:Rent(int):System.__Canon[]: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; 17 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 16 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 11, 7 ) ref -> [rbp-0x48] this class-hnd single-def <System.Buffers.SharedArrayPool`1[System.__Canon]>
+; V00 this [V00,T08] ( 11, 7 ) ref -> rbx this class-hnd single-def <System.Buffers.SharedArrayPool`1[System.__Canon]>
; V01 arg1 [V01,T10] ( 7, 5 ) int -> r15
-; V02 loc0 [V02,T14] ( 8, 4.50) ref -> [rbp-0x50] class-hnd exact spill-single-def <System.Buffers.ArrayPoolEventSource>
+; V02 loc0 [V02,T14] ( 8, 4.50) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
; V03 loc1 [V03,T11] ( 13, 6.50) ref -> registers class-hnd <System.__Canon[]>
; V04 loc2 [V04,T12] ( 9, 5 ) int -> r13
-; V05 loc3 [V05,T15] ( 5, 3.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V06 loc4 [V06,T37] ( 3, 1.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
-; V07 loc5 [V07,T38] ( 3, 1.50) ref -> rax class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
-; V08 loc6 [V08,T40] ( 3, 1.50) int -> r15
+; V05 loc3 [V05,T16] ( 5, 3.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V06 loc4 [V06,T39] ( 3, 1.50) ref -> r12 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
+; V07 loc5 [V07,T40] ( 3, 1.50) ref -> rdi class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
+; V08 loc6 [V08,T42] ( 3, 1.50) int -> r15
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp2 [V11,T25] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
-; V12 tmp3 [V12,T26] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
-; V13 tmp4 [V13,T27] ( 2, 2 ) int -> rcx "impAppendStmt"
+; V11 tmp2 [V11,T26] ( 2, 2 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
+; V12 tmp3 [V12,T27] ( 2, 2 ) int -> [rbp-0x38] spill-single-def "impAppendStmt"
+; V13 tmp4 [V13,T28] ( 2, 2 ) int -> rcx "impAppendStmt"
;* V14 tmp5 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
;* 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 ) int -> zero-ref
;* V19 tmp10 [V19 ] ( 0, 0 ) ref -> zero-ref single-def
;* 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 ] ( 0, 0 ) int -> zero-ref
-; V24 tmp15 [V24,T42] ( 2, 1 ) int -> r9
+; V24 tmp15 [V24,T46] ( 2, 1 ) int -> r9
;* V25 tmp16 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V26 tmp17 [V26,T28] ( 2, 2 ) int -> r15 "impAppendStmt"
-; V27 tmp18 [V27,T29] ( 2, 2 ) int -> [rbp-0x3C] spill-single-def "impAppendStmt"
-; V28 tmp19 [V28,T30] ( 2, 2 ) int -> r12 "impAppendStmt"
-; V29 tmp20 [V29,T31] ( 2, 2 ) int -> [rbp-0x40] spill-single-def "impAppendStmt"
+; V26 tmp17 [V26,T29] ( 2, 2 ) int -> r15 "impAppendStmt"
+; V27 tmp18 [V27,T30] ( 2, 2 ) int -> [rbp-0x3C] spill-single-def "impAppendStmt"
+; V28 tmp19 [V28,T31] ( 2, 2 ) int -> r12 "impAppendStmt"
+; V29 tmp20 [V29,T32] ( 2, 2 ) int -> [rbp-0x40] 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,T39] ( 3, 1.50) ref -> rcx class-hnd "Inline return value spill temp" <System.Array>
-; V33 tmp24 [V33,T13] ( 3, 5 ) ref -> [rbp-0x58] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+; V32 tmp23 [V32,T41] ( 3, 1.50) ref -> rcx class-hnd "Inline return value spill temp" <System.Array>
+; V33 tmp24 [V33,T13] ( 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 -> r15 "Inline stloc first use temp"
-; V35 tmp26 [V35,T05] ( 4, 12.50) int -> rbx "Inline stloc first use temp"
+; V35 tmp26 [V35,T05] ( 4, 12.50) int -> [rbp-0x44] "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 -> r15 "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-0x60] class-hnd "Inline stloc first use temp" <System.Array>
-; V42 tmp33 [V42,T00] ( 7, 52 ) ref -> [rbp-0x68] 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 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.__Canon[]>
-;* V46 tmp37 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V47 tmp38 [V47 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V48 tmp39 [V48,T19] ( 3, 2.20) long -> rdi "argument with side effect"
-; V49 tmp40 [V49,T32] ( 2, 2 ) long -> rdi "argument with side effect"
-; V50 tmp41 [V50,T33] ( 2, 2 ) int -> rcx "argument with side effect"
-; V51 tmp42 [V51,T34] ( 2, 2 ) int -> rcx "argument with side effect"
-; V52 tmp43 [V52,T35] ( 2, 2 ) int -> rcx "argument with side effect"
-; V53 cse0 [V53,T43] ( 2, 1 ) int -> rdi "CSE #04: moderate"
-; V54 cse1 [V54,T41] ( 3, 1.50) long -> rax "CSE #03: moderate"
-; V55 cse2 [V55,T04] ( 5, 13 ) int -> r14 "CSE #05: moderate"
-; V56 cse3 [V56,T09] ( 2, 8 ) int -> rdx "CSE #06: moderate"
-; V57 cse4 [V57,T44] ( 2, 1 ) int -> rdi "CSE #01: moderate"
-; V58 rat0 [V58,T20] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
-; V59 rat1 [V59,T22] ( 3, 2 ) long -> rsi "runtime lookup"
-; V60 rat2 [V60,T16] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
-; V61 rat3 [V61,T21] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
-; V62 rat4 [V62,T23] ( 3, 2 ) long -> rdi "runtime lookup"
-; V63 rat5 [V63,T17] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
-; V64 rat6 [V64,T24] ( 3, 2 ) long -> rdi "runtime lookup"
-; V65 rat7 [V65,T18] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
-; V66 rat8 [V66,T36] ( 2, 2 ) int -> r15 "Spilling to split statement for tree"
+; V40 tmp31 [V40,T43] ( 3, 1.50) int -> r15 "Inline return value spill temp"
+; V41 tmp32 [V41,T15] ( 4, 4 ) int -> r15 "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-0x50] class-hnd "Inline stloc first use temp" <System.Array>
+; V45 tmp36 [V45,T00] ( 7, 52 ) ref -> [rbp-0x58] 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 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.__Canon[]>
+;* V49 tmp40 [V49 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V50 tmp41 [V50 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V51 tmp42 [V51,T20] ( 3, 2.20) long -> rdi "argument with side effect"
+; V52 tmp43 [V52,T33] ( 2, 2 ) long -> rdi "argument with side effect"
+; V53 tmp44 [V53,T34] ( 2, 2 ) int -> rcx "argument with side effect"
+; V54 tmp45 [V54,T35] ( 2, 2 ) int -> rcx "argument with side effect"
+; V55 tmp46 [V55,T36] ( 2, 2 ) int -> rcx "argument with side effect"
+; V56 cse0 [V56,T44] ( 3, 1.50) long -> rax "CSE #05: conservative"
+; V57 cse1 [V57,T47] ( 2, 1 ) int -> rdi "CSE #04: conservative"
+; V58 cse2 [V58,T45] ( 3, 1.50) long -> rax "CSE #03: conservative"
+; V59 cse3 [V59,T04] ( 5, 13 ) int -> [rbp-0x48] spill-single-def "CSE #06: moderate"
+; V60 cse4 [V60,T09] ( 2, 8 ) int -> rcx "CSE #07: moderate"
+; V61 cse5 [V61,T48] ( 2, 1 ) int -> rdi "CSE #01: conservative"
+; V62 rat0 [V62,T21] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V63 rat1 [V63,T23] ( 3, 2 ) long -> rsi "runtime lookup"
+; V64 rat2 [V64,T17] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
+; V65 rat3 [V65,T22] ( 3, 2.20) long -> rdi "Spilling to split statement for tree"
+; V66 rat4 [V66,T24] ( 3, 2 ) long -> rdi "runtime lookup"
+; V67 rat5 [V67,T18] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V68 rat6 [V68,T25] ( 3, 2 ) long -> rdi "runtime lookup"
+; V69 rat7 [V69,T19] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable"
+; V70 rat8 [V70,T37] ( 2, 2 ) long -> rax "TLS field access"
+; V71 rat9 [V71,T38] ( 2, 2 ) long -> rax "TLS access"
;
-; Lcl frame size = 72
+; Lcl frame size = 56
G_M45970_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]
mov qword ptr [rbp-0x30], rdi
mov rbx, rdi
mov r15d, esi
- ;; size=32 bbWeight=1 PerfScore 9.25
+ ;; size=29 bbWeight=1 PerfScore 8.25
G_M45970_IG02:
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
- mov gword ptr [rbp-0x50], r14
lea edi, [r15-0x01]
or edi, 15
xor r13d, r13d
lzcnt r13d, edi
xor r13d, 31
add r13d, -3
mov rdi, qword ptr [rbx]
call CORINFO_HELP_GET_GCTHREADSTATIC_BASE
mov r12, gword ptr [rax+0x10]
test r12, r12
je SHORT G_M45970_IG04
- ;; size=57 bbWeight=1 PerfScore 13.00
+ ;; size=53 bbWeight=1 PerfScore 12.00
G_M45970_IG03:
mov edi, dword ptr [r12+0x08]
cmp edi, r13d
jbe SHORT G_M45970_IG04
mov eax, r13d
shl rax, 4
mov rcx, gword ptr [r12+rax+0x10]
test rcx, rcx
jne G_M45970_IG31
;; size=31 bbWeight=0.50 PerfScore 3.62
G_M45970_IG04:
mov r12, gword ptr [rbx+0x10]
mov edi, dword ptr [r12+0x08]
cmp edi, r13d
ja SHORT G_M45970_IG10
test r15d, r15d
je SHORT G_M45970_IG05
mov edi, r15d
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_M45970_IG23
;; size=49 bbWeight=0.50 PerfScore 6.12
G_M45970_IG05:
- mov gword ptr [rbp-0x48], rbx
mov rdi, qword ptr [rbx]
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi+0x08]
mov rsi, qword ptr [rsi+0x18]
test rsi, rsi
je SHORT G_M45970_IG07
- ;; size=24 bbWeight=0.50 PerfScore 5.12
+ ;; size=20 bbWeight=0.50 PerfScore 4.62
G_M45970_IG06:
jmp SHORT G_M45970_IG08
;; size=2 bbWeight=0.40 PerfScore 0.80
G_M45970_IG07:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rsi, rax
;; size=18 bbWeight=0.10 PerfScore 0.15
G_M45970_IG08:
mov rdi, rsi
mov rax, 0xD1FFAB1E ; code for System.Array:Empty[System.__Canon]():System.__Canon[]
;; size=13 bbWeight=0.50 PerfScore 0.25
G_M45970_IG09:
- add rsp, 72
+ add rsp, 56
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
tail.jmp [rax]System.Array:Empty[System.__Canon]():System.__Canon[]
;; size=17 bbWeight=0.50 PerfScore 2.62
G_M45970_IG10:
- 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_M45970_IG22
- mov gword ptr [rbp-0x48], rbx
- mov r12, gword ptr [rax+0x08]
- mov gword ptr [rbp-0x58], r12
+ mov r12, gword ptr [rdi+0x08]
+ mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
- ;; size=39 bbWeight=0.50 PerfScore 3.88
+ call rax
+ add rax, 76
+ mov r15d, dword ptr [rax+0x10]
+ lea ecx, [r15-0x01]
+ mov dword ptr [rax+0x10], ecx
+ movzx rax, r15w
+ test eax, eax
+ je SHORT G_M45970_IG11
+ sar r15d, 16
+ jmp SHORT G_M45970_IG12
+ ;; size=72 bbWeight=0.50 PerfScore 8.38
G_M45970_IG11:
- call rax ; Interop+Sys:SchedGetCpu():int
+ mov rax, 0xD1FFAB1E ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+ call [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
mov r15d, eax
- mov rax, 0xD1FFAB1E ; global ptr
- cmp dword ptr [rax], 0
- jne G_M45970_IG35
- ;; size=24 bbWeight=0.50 PerfScore 3.75
+ ;; size=15 bbWeight=0.50 PerfScore 1.75
G_M45970_IG12:
mov rax, 0xD1FFAB1E ; global ptr
test byte ptr [rax], 1
- je G_M45970_IG36
+ je G_M45970_IG35
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M45970_IG13:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
mov eax, r15d
xor edx, edx
div edx:eax, dword ptr [rdi]
mov r15d, edx
- xor ebx, ebx
- mov r12, gword ptr [rbp-0x58]
- mov r14d, dword ptr [r12+0x08]
- test r14d, r14d
- jle SHORT G_M45970_IG19
- ;; size=36 bbWeight=0.50 PerfScore 15.25
+ xor eax, eax
+ mov dword ptr [rbp-0x44], eax
+ mov ecx, dword ptr [r12+0x08]
+ mov dword ptr [rbp-0x48], ecx
+ test ecx, ecx
+ jle G_M45970_IG19
+ ;; size=41 bbWeight=0.50 PerfScore 15.75
G_M45970_IG14:
- cmp r15d, r14d
- jae G_M45970_IG37
+ cmp r15d, ecx
+ jae G_M45970_IG36
mov edi, r15d
- mov rax, gword ptr [r12+8*rdi+0x10]
- mov gword ptr [rbp-0x68], rax
- cmp byte ptr [rax], al
- xor rcx, rcx
- mov gword ptr [rbp-0x60], rcx
- mov rdi, rax
+ mov rdx, gword ptr [r12+8*rdi+0x10]
+ mov gword ptr [rbp-0x58], rdx
+ cmp byte ptr [rdx], dl
+ xor rsi, rsi
+ mov gword ptr [rbp-0x50], rsi
+ mov rdi, rdx
call System.Threading.Monitor:Enter(System.Object)
- mov rax, gword ptr [rbp-0x68]
- 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-0x58]
+ 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_M45970_IG16
;; size=57 bbWeight=4 PerfScore 74.00
G_M45970_IG15:
- mov edx, ecx
- mov rdx, gword ptr [rdi+8*rdx+0x10]
- mov gword ptr [rbp-0x60], rdx
- mov esi, ecx
+ mov ecx, eax
+ mov rsi, gword ptr [rdi+8*rcx+0x10]
+ mov gword ptr [rbp-0x50], 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_M45970_IG16:
- mov rdi, rax
+ mov rdi, rdx
call System.Threading.Monitor:Exit(System.Object)
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0x50]
test rdi, rdi
jne SHORT G_M45970_IG20
inc r15d
- cmp r14d, r15d
+ mov edi, dword ptr [rbp-0x48]
+ cmp edi, r15d
jne SHORT G_M45970_IG18
- ;; size=25 bbWeight=4 PerfScore 20.00
+ ;; size=28 bbWeight=4 PerfScore 24.00
G_M45970_IG17:
xor r15d, r15d
;; size=3 bbWeight=2 PerfScore 0.50
G_M45970_IG18:
- inc ebx
- cmp r14d, ebx
+ mov eax, dword ptr [rbp-0x44]
+ inc eax
+ cmp edi, eax
+ mov dword ptr [rbp-0x44], eax
+ mov ecx, edi
jg SHORT G_M45970_IG14
- ;; size=7 bbWeight=4 PerfScore 6.00
+ ;; size=14 bbWeight=4 PerfScore 15.00
G_M45970_IG19:
xor rcx, rcx
jmp SHORT G_M45970_IG21
;; size=4 bbWeight=0.50 PerfScore 1.12
G_M45970_IG20:
mov rcx, rdi
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M45970_IG21:
mov r12, rcx
test r12, r12
- mov rbx, gword ptr [rbp-0x48]
jne G_M45970_IG30
- ;; size=16 bbWeight=0.50 PerfScore 1.25
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
G_M45970_IG22:
mov edi, 16
shlx r15d, edi, r13d
;; size=10 bbWeight=0.50 PerfScore 0.38
G_M45970_IG23:
mov rdi, qword ptr [rbx]
mov rsi, qword ptr [rdi+0x30]
mov rsi, qword ptr [rsi+0x08]
mov rax, qword ptr [rsi+0x10]
test rax, rax
je SHORT G_M45970_IG25
;; size=20 bbWeight=0.50 PerfScore 4.62
G_M45970_IG24:
mov rdi, rax
jmp SHORT G_M45970_IG26
;; size=5 bbWeight=0.40 PerfScore 0.90
G_M45970_IG25:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov rdi, rax
;; size=18 bbWeight=0.10 PerfScore 0.15
G_M45970_IG26:
mov rsi, qword ptr [rdi+0x18]
mov rax, qword ptr [rsi+0x10]
test rax, rax
je SHORT G_M45970_IG28
;; size=13 bbWeight=0.50 PerfScore 2.62
G_M45970_IG27:
mov rdi, rax
jmp SHORT G_M45970_IG29
;; size=5 bbWeight=0.40 PerfScore 0.90
G_M45970_IG28:
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rdi, rax
;; size=18 bbWeight=0.10 PerfScore 0.15
G_M45970_IG29:
movsxd rsi, r15d
call CORINFO_HELP_NEWARR_1_OBJ
mov r12, rax
- mov r14, gword ptr [rbp-0x50]
cmp byte ptr [r14+0x9D], 0
je G_M45970_IG32
mov rdi, r12
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov r15d, eax
mov eax, dword ptr [r12+0x08]
mov dword ptr [rbp-0x34], eax
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov esi, r15d
mov edx, dword ptr [rbp-0x34]
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-0x38], eax
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov rdi, gword ptr [rbx+0x10]
mov r9d, 1
mov esi, 2
cmp dword ptr [rdi+0x08], r13d
cmovg r9d, esi
mov rdi, r14
mov esi, r15d
mov edx, dword ptr [rbp-0x38]
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_M45970_IG32
- ;; size=158 bbWeight=0.50 PerfScore 17.38
+ ;; size=154 bbWeight=0.50 PerfScore 16.88
G_M45970_IG30:
- mov r14, gword ptr [rbp-0x50]
cmp byte ptr [r14+0x9D], 0
je G_M45970_IG32
mov rdi, r12
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov r15d, eax
mov eax, dword ptr [r12+0x08]
mov dword ptr [rbp-0x3C], eax
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov esi, r15d
mov edx, dword ptr [rbp-0x3C]
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_M45970_IG32
- ;; size=73 bbWeight=0.50 PerfScore 9.00
+ ;; size=69 bbWeight=0.50 PerfScore 8.50
G_M45970_IG31:
mov r15, rcx
xor rdi, rdi
mov gword ptr [r12+rax+0x10], rdi
- mov r14, gword ptr [rbp-0x50]
cmp byte ptr [r14+0x9D], 0
je SHORT G_M45970_IG34
mov rdi, r15
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov r12d, eax
mov eax, dword ptr [r15+0x08]
mov dword ptr [rbp-0x40], eax
mov rdi, rbx
call System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
mov ecx, eax
mov esi, r12d
mov edx, dword ptr [rbp-0x40]
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, r15
- ;; size=79 bbWeight=0.50 PerfScore 8.88
+ ;; size=75 bbWeight=0.50 PerfScore 8.38
G_M45970_IG32:
mov rax, r12
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M45970_IG33:
- add rsp, 72
+ add rsp, 56
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M45970_IG34:
mov r12, r15
jmp SHORT G_M45970_IG32
;; size=5 bbWeight=0.25 PerfScore 0.56
G_M45970_IG35:
- call CORINFO_HELP_POLL_GC
- jmp G_M45970_IG12
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M45970_IG36:
mov rdi, 0xD1FFAB1E ; System.Buffers.SharedArrayPoolStatics
call CORINFO_HELP_GET_NONGCSTATIC_BASE
jmp G_M45970_IG13
;; size=20 bbWeight=0 PerfScore 0.00
-G_M45970_IG37:
+G_M45970_IG36:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 958, prolog size 32, PerfScore 228.24, instruction count 251, allocated bytes for code 958 (MethodHash=02034c6d) for method System.Buffers.SharedArrayPool`1[System.__Canon]:Rent(int):System.__Canon[]:this (FullOpts)
+; Total bytes of code 960, prolog size 29, PerfScore 239.74, instruction count 254, allocated bytes for code 960 (MethodHash=02034c6d) for method System.Buffers.SharedArrayPool`1[System.__Canon]:Rent(int):System.__Canon[]:this (FullOpts)