forked from MihaZupan/runtime-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[JitDiff X64] [EgorBo] JIT: Avoid boxing ArgumentNullException.ThrowIfNull arguments in Tier-0 #518
Comments
Top method regressions118 (8.77 % of base) - System.DirectoryServices.Protocols.SortRequestControl:GetValue():ubyte[]:this ; Assembly listing for method System.DirectoryServices.Protocols.SortRequestControl:GetValue():ubyte[]:this (Tier0-FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier-0 switched to FullOpts code
; optimized code
; optimized using Synthesized PGO
; rbp based frame
; fully interruptible
; with Synthesized PGO: fgCalledCount is 100
; No PGO data
-; 0 inlinees with PGO data; 21 single block inlinees; 7 inlinees without PGO data
+; 0 inlinees with PGO data; 24 single block inlinees; 15 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T11] ( 10, 23.46) ref -> [rbp-0xB0] this class-hnd EH-live single-def <System.DirectoryServices.Protocols.SortRequestControl>
; V01 loc0 [V01,T10] ( 6, 29.81) ref -> [rbp-0xB8] class-hnd exact spill-single-def <System.DirectoryServices.Protocols.SortKeyInterop[]>
; V02 loc1 [V02 ] ( 5, 4.00) long -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V03 loc2 [V03,T21] ( 2, 9.91) int -> r14 single-def
; V04 loc3 [V04,T18] ( 6, 16.11) int -> [rbp-0x34] EH-live spill-single-def
; V05 loc4 [V05,T22] ( 6, 8.10) long -> [rbp-0x40] EH-live spill-single-def
-;* V06 loc5 [V06,T33] ( 0, 0 ) int -> zero-ref
+;* V06 loc5 [V06,T36] ( 0, 0 ) int -> zero-ref
; V07 loc6 [V07,T20] ( 3, 10.91) long -> r12 single-def
;* V08 loc7 [V08 ] ( 0, 0 ) long -> zero-ref
; V09 loc8 [V09,T26] ( 3, 2.89) int -> rcx
; V10 loc9 [V10,T30] ( 2, 2 ) ubyte -> r15 single-def
; V11 loc10 [V11,T28] ( 6, 2.52) int -> r14 single-def
;* V12 loc11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.DirectoryServices.Protocols.LdapControl>
-; V13 loc12 [V13,T32] ( 4, 1.46) ref -> r14 class-hnd exact single-def <System.DirectoryServices.Protocols.BerVal>
-; V14 loc13 [V14,T38] ( 2, 0 ) ref -> r15 class-hnd exact single-def <System.String>
+; V13 loc12 [V13,T33] ( 4, 1.46) ref -> r14 class-hnd exact single-def <System.DirectoryServices.Protocols.BerVal>
+; V14 loc13 [V14,T47] ( 2, 0 ) ref -> r15 class-hnd exact single-def <System.String>
; V15 loc14 [V15,T12] ( 5, 19.24) int -> rbx
; V16 loc15 [V16,T17] ( 5, 16.17) long -> r15
; V17 loc16 [V17,T19] ( 6, 11.76) long -> rax
;# V18 OutArgs [V18 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V19 tmp1 [V19 ] ( 5, 90.00) struct (24) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.DirectoryServices.Protocols.SortKeyInterop>
; V20 tmp2 [V20,T24] ( 4, 3.84) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.LdapControl>
-; V21 tmp3 [V21,T36] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.LdapException>
-; V22 tmp4 [V22,T37] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.LdapException>
+; V21 tmp3 [V21,T45] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.LdapException>
+; V22 tmp4 [V22,T46] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.LdapException>
;* V23 tmp5 [V23 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V24 tmp6 [V24,T07] ( 3, 44.19) long -> rdi "Inlining Arg"
; V25 tmp7 [V25,T13] ( 3, 17.82) long -> rdi
; V26 tmp8 [V26,T03] ( 4, 71.28) long -> rbx "dup spill"
;* V27 tmp9 [V27 ] ( 0, 0 ) long -> zero-ref
;* V28 tmp10 [V28 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.DirectoryServices.Protocols.SortKeyInterop>
; V29 tmp11 [V29,T00] ( 5, 89.10) ref -> [rbp-0xC0] class-hnd exact spill-single-def "Single-def Box Helper" <System.DirectoryServices.Protocols.SortKeyInterop>
;* V30 tmp12 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.DirectoryServices.Protocols.ConnectionHandle>
;* V31 tmp13 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V32 tmp14 [V32,T27] ( 3, 2.88) long -> rdi "Inlining Arg"
;* V33 tmp15 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.DirectoryServices.Protocols.LdapControl>
-;* V34 tmp16 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V35 tmp17 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-;* V36 tmp18 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V37 tmp19 [V37,T29] ( 2, 2.08) long -> rdi "Inlining Arg"
-;* V38 tmp20 [V38 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V39 tmp21 [V39,T31] ( 2, 1.92) ref -> rax single-def "Single return block return value"
-; V40 FramesRoot [V40,T08] ( 6, 37.64) long -> r15 "Pinvoke FrameListRoot"
-; V41 PInvokeFrame [V41 ] ( 8, 39.64) struct (64) [rbp-0x98] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V42 tmp24 [V42 ] ( 3, 45.00) ref -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V19.<AttributeName>k__BackingField (fldOffset=0x0)" P-DEP
-; V43 tmp25 [V43 ] ( 3, 45.00) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V19.<MatchingRule>k__BackingField (fldOffset=0x8)" P-DEP
-; V44 tmp26 [V44 ] ( 3, 45.00) ubyte -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V19.<ReverseOrder>k__BackingField (fldOffset=0x10)" P-DEP
-; V45 tmp27 [V45,T14] ( 2, 17.82) ref -> [rbp-0xC8] spill-single-def "field V28.<AttributeName>k__BackingField (fldOffset=0x0)" P-INDEP
-; V46 tmp28 [V46,T15] ( 2, 17.82) ref -> [rbp-0xD0] spill-single-def "field V28.<MatchingRule>k__BackingField (fldOffset=0x8)" P-INDEP
-; V47 tmp29 [V47,T16] ( 2, 17.82) ubyte -> [rbp-0x9C] spill-single-def "field V28.<ReverseOrder>k__BackingField (fldOffset=0x10)" P-INDEP
-; V48 tmp30 [V48,T05] ( 3, 54.00) ref -> rsi "arr expr"
-; V49 tmp31 [V49,T09] ( 2, 36.00) ref -> rsi "argument with side effect"
-; V50 tmp32 [V50,T01] ( 4, 72.00) byref -> r14 "BlockOp address local"
-; V51 tmp33 [V51,T02] ( 4, 71.28) byref -> rdi "BlockOp address local"
-; V52 tmp34 [V52,T23] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
-; V53 PSPSym [V53,T34] ( 1, 1 ) long -> [rbp-0xE0] do-not-enreg[V] "PSPSym"
-; V54 cse0 [V54,T35] ( 3, 0.75) int -> r15 "CSE #07: conservative"
-; V55 cse1 [V55,T25] ( 3, 3 ) ref -> r14 "CSE #01: moderate"
-; V56 rat0 [V56,T04] ( 8, 64.00) long -> r12 "Widened IV V06"
-; V57 rat1 [V57,T06] ( 7, 46.44) long -> [rbp-0xA8] "Widened IV V09"
+; V34 tmp16 [V34,T34] ( 3, 1.36) long -> rsi "Inlining Arg"
+; V35 tmp17 [V35,T35] ( 3, 1.12) ref -> rdi class-hnd single-def "Inlining Arg" <ubyte[]>
+; V36 tmp18 [V36,T32] ( 4, 1.36) int -> r15 "Inlining Arg"
+;* V37 tmp19 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+;* V38 tmp20 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
+;* V39 tmp21 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+;* V40 tmp22 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V41 tmp23 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V42 tmp24 [V42 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V43 tmp25 [V43 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V44 tmp26 [V44,T29] ( 2, 2.08) long -> rdi "Inlining Arg"
+;* V45 tmp27 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V46 tmp28 [V46,T31] ( 2, 1.92) ref -> rax single-def "Single return block return value"
+; V47 FramesRoot [V47,T08] ( 6, 37.64) long -> r15 "Pinvoke FrameListRoot"
+; V48 PInvokeFrame [V48 ] ( 8, 39.64) struct (64) [rbp-0x98] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V49 tmp31 [V49 ] ( 3, 45.00) ref -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V19.<AttributeName>k__BackingField (fldOffset=0x0)" P-DEP
+; V50 tmp32 [V50 ] ( 3, 45.00) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V19.<MatchingRule>k__BackingField (fldOffset=0x8)" P-DEP
+; V51 tmp33 [V51 ] ( 3, 45.00) ubyte -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V19.<ReverseOrder>k__BackingField (fldOffset=0x10)" P-DEP
+; V52 tmp34 [V52,T14] ( 2, 17.82) ref -> [rbp-0xC8] spill-single-def "field V28.<AttributeName>k__BackingField (fldOffset=0x0)" P-INDEP
+; V53 tmp35 [V53,T15] ( 2, 17.82) ref -> [rbp-0xD0] spill-single-def "field V28.<MatchingRule>k__BackingField (fldOffset=0x8)" P-INDEP
+; V54 tmp36 [V54,T16] ( 2, 17.82) ubyte -> [rbp-0x9C] spill-single-def "field V28.<ReverseOrder>k__BackingField (fldOffset=0x10)" P-INDEP
+; V55 tmp37 [V55,T40] ( 2, 0.36) byref -> rsi single-def "field V37._reference (fldOffset=0x0)" P-INDEP
+;* V56 tmp38 [V56,T43] ( 0, 0 ) int -> zero-ref single-def "field V37._length (fldOffset=0x8)" P-INDEP
+; V57 tmp39 [V57,T41] ( 2, 0.31) byref -> rsi single-def "field V38._reference (fldOffset=0x0)" P-INDEP
+; V58 tmp40 [V58,T39] ( 3, 0.49) int -> r15 single-def "field V38._length (fldOffset=0x8)" P-INDEP
+; V59 tmp41 [V59,T42] ( 2, 0.26) byref -> rdi single-def "field V39._reference (fldOffset=0x0)" P-INDEP
+;* V60 tmp42 [V60,T44] ( 0, 0 ) int -> zero-ref single-def "field V39._length (fldOffset=0x8)" P-INDEP
+;* V61 tmp43 [V61 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
+;* V62 tmp44 [V62 ] ( 0, 0 ) int -> zero-ref single-def "field V40._length (fldOffset=0x8)" P-INDEP
+; V63 tmp45 [V63,T05] ( 3, 54.00) ref -> rsi "arr expr"
+; V64 tmp46 [V64,T09] ( 2, 36.00) ref -> rsi "argument with side effect"
+; V65 tmp47 [V65,T01] ( 4, 72.00) byref -> r14 "BlockOp address local"
+; V66 tmp48 [V66,T02] ( 4, 71.28) byref -> rdi "BlockOp address local"
+; V67 tmp49 [V67,T23] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
+; V68 tmp50 [V68,T48] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V69 PSPSym [V69,T37] ( 1, 1 ) long -> [rbp-0xE0] do-not-enreg[V] "PSPSym"
+; V70 cse0 [V70,T38] ( 3, 0.75) int -> r15 "CSE #07: conservative"
+; V71 cse1 [V71,T25] ( 3, 3 ) ref -> r14 "CSE #01: moderate"
+; V72 rat0 [V72,T04] ( 8, 64.00) long -> r12 "Widened IV V06"
+; V73 rat1 [V73,T06] ( 7, 46.44) long -> [rbp-0xA8] "Widened IV V09"
;
; Lcl frame size = 184
G_M6630_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 184
vzeroupper
lea rbp, [rsp+0xE0]
xor eax, eax
mov qword ptr [rbp-0x58], rax
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x50], ymm8
mov qword ptr [rbp-0x30], rax
mov qword ptr [rbp-0xE0], rsp
mov gword ptr [rbp-0xB0], rdi
mov rbx, rdi
;; size=65 bbWeight=1 PerfScore 14.58
G_M6630_IG02:
lea rdi, [rbp-0x90]
call CORINFO_HELP_INIT_PINVOKE_FRAME
mov r15, rax
mov rsi, rsp
mov qword ptr [rbp-0x78], rsi
mov rsi, rbp
mov qword ptr [rbp-0x68], rsi
mov r14, gword ptr [rbx+0x20]
mov esi, dword ptr [r14+0x08]
mov rdi, 0xD1FFAB1E ; System.DirectoryServices.Protocols.SortKeyInterop[]
call CORINFO_HELP_NEWARR_1_VC
mov r13, rax
mov gword ptr [rbp-0xB8], r13
xor r12d, r12d
cmp dword ptr [r14+0x08], 0
jle SHORT G_M6630_IG04
;; size=72 bbWeight=1 PerfScore 15.00
G_M6630_IG03:
mov rbx, gword ptr [rbp-0xB0]
vxorps xmm0, xmm0, xmm0
vmovdqu xmmword ptr [rbp-0x58], xmm0
vmovdqu xmmword ptr [rbp-0x50], xmm0
mov rsi, gword ptr [rbx+0x20]
cmp r12d, dword ptr [rsi+0x08]
- jae G_M6630_IG31
+ jae G_M6630_IG36
mov rsi, gword ptr [rsi+8*r12+0x10]
lea rdi, [rbp-0x58]
mov rax, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.SortKeyInterop:.ctor(System.DirectoryServices.Protocols.SortKey):this
call [rax]System.DirectoryServices.Protocols.SortKeyInterop:.ctor(System.DirectoryServices.Protocols.SortKey):this
cmp r12d, dword ptr [r13+0x08]
- jae G_M6630_IG31
+ jae G_M6630_IG36
lea rdi, [r12+2*r12]
lea r14, bword ptr [r13+8*rdi+0x10]
mov rsi, gword ptr [rbp-0x58]
mov rdi, r14
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r14+0x08]
mov rsi, gword ptr [rbp-0x50]
call CORINFO_HELP_ASSIGN_REF
movzx rax, byte ptr [rbp-0x48]
mov byte ptr [r14+0x10], al
inc r12d
mov rax, gword ptr [rbx+0x20]
cmp dword ptr [rax+0x08], r12d
jg SHORT G_M6630_IG03
;; size=121 bbWeight=9.00 PerfScore 311.25
G_M6630_IG04:
xor eax, eax
mov qword ptr [rbp-0x30], rax
mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:SizeOf[System.DirectoryServices.Protocols.SortKeyInterop]():int
call [rax]System.Runtime.InteropServices.Marshal:SizeOf[System.DirectoryServices.Protocols.SortKeyInterop]():int
mov r14d, eax
mov eax, dword ptr [r13+0x08]
mov dword ptr [rbp-0x34], eax
lea edi, [rax+0x01]
mov rcx, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.Utility:AllocHGlobalIntPtrArray(int):long
call [rcx]System.DirectoryServices.Protocols.Utility:AllocHGlobalIntPtrArray(int):long
mov qword ptr [rbp-0x40], rax
;; size=47 bbWeight=1 PerfScore 12.50
G_M6630_IG05:
mov r12, rax
xor ecx, ecx
xor edx, edx
mov qword ptr [rbp-0xA8], rdx
cmp dword ptr [rbp-0x34], 0
mov rax, qword ptr [rbp-0x40]
jle G_M6630_IG17
;; size=28 bbWeight=1 PerfScore 5.75
G_M6630_IG06:
mov edi, dword ptr [r13+0x08]
;; size=4 bbWeight=0.90 PerfScore 1.80
G_M6630_IG07:
movsxd rdi, r14d
test rdi, rdi
jne SHORT G_M6630_IG14
;; size=8 bbWeight=8.91 PerfScore 13.37
G_M6630_IG08:
mov edi, 1
;; size=5 bbWeight=4.63 PerfScore 1.16
G_M6630_IG09:
mov rcx, 0xD1FFAB1E ; function address
mov qword ptr [rbp-0x80], rcx
lea rcx, G_M6630_IG12
mov qword ptr [rbp-0x70], rcx
lea rcx, [rbp-0x90]
mov qword ptr [r15+0x08], rcx
mov byte ptr [r15+0x04], 0
;; size=41 bbWeight=8.91 PerfScore 51.23
G_M6630_IG10:
mov rcx, 0xD1FFAB1E ; code for Interop+Sys:Malloc(ulong):ulong
;; size=10 bbWeight=8.91 PerfScore 2.23
G_M6630_IG11:
call [rcx]Interop+Sys:Malloc(ulong):ulong
;; size=2 bbWeight=8.91 PerfScore 26.73
G_M6630_IG12:
mov byte ptr [r15+0x04], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
je SHORT G_M6630_IG13
mov rdi, 0xD1FFAB1E
call [rdi]CORINFO_HELP_STOP_FOR_GC
;; size=32 bbWeight=8.91 PerfScore 75.74
G_M6630_IG13:
mov rdi, qword ptr [rbp-0x88]
mov qword ptr [r15+0x08], rdi
mov rbx, rax
test rbx, rbx
jne SHORT G_M6630_IG15
- jmp G_M6630_IG22
+ jmp G_M6630_IG24
;; size=24 bbWeight=8.91 PerfScore 49.01
G_M6630_IG14:
jmp SHORT G_M6630_IG09
;; size=2 bbWeight=4.28 PerfScore 8.55
G_M6630_IG15:
mov r13, qword ptr [rbp-0xA8]
lea rdi, [r13+2*r13]
mov rax, gword ptr [rbp-0xB8]
lea rdi, bword ptr [rax+8*rdi+0x10]
mov rcx, gword ptr [rdi]
mov gword ptr [rbp-0xC8], rcx
mov rdx, gword ptr [rdi+0x08]
mov gword ptr [rbp-0xD0], rdx
movzx rsi, byte ptr [rdi+0x10]
mov byte ptr [rbp-0x9C], sil
mov rdi, 0xD1FFAB1E ; System.DirectoryServices.Protocols.SortKeyInterop
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0xC0], rax
lea rdi, bword ptr [rax+0x08]
mov rsi, gword ptr [rbp-0xC8]
call CORINFO_HELP_ASSIGN_REF
mov rax, gword ptr [rbp-0xC0]
lea rdi, bword ptr [rax+0x10]
mov rsi, gword ptr [rbp-0xD0]
call CORINFO_HELP_ASSIGN_REF
mov rdi, gword ptr [rbp-0xC0]
movzx rsi, byte ptr [rbp-0x9C]
mov byte ptr [rdi+0x18], sil
mov rsi, rbx
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:StructureToPtr(System.Object,long,ubyte)
call [rax]System.Runtime.InteropServices.Marshal:StructureToPtr(System.Object,long,ubyte)
movsxd rdi, r13d
mov qword ptr [r12+8*rdi], rbx
inc r13d
mov esi, dword ptr [rbp-0x34]
cmp r13d, esi
mov qword ptr [rbp-0xA8], r13
mov rax, qword ptr [rbp-0x40]
jl G_M6630_IG07
;; size=187 bbWeight=8.91 PerfScore 309.62
G_M6630_IG16:
mov rcx, qword ptr [rbp-0xA8]
;; size=7 bbWeight=0.89 PerfScore 0.89
G_M6630_IG17:
movsxd rdi, ecx
xor edx, edx
mov qword ptr [r12+8*rdi], rdx
mov rbx, gword ptr [rbp-0xB0]
movzx r15, byte ptr [rbx+0x18]
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M6630_IG23
+ je G_M6630_IG25
;; size=40 bbWeight=1 PerfScore 8.75
G_M6630_IG18:
mov rdi, 0xD1FFAB1E ; data for System.DirectoryServices.Protocols.UtilityHandle:s_handle
mov rdi, gword ptr [rdi]
test r15d, r15d
setne dl
movzx rdx, dl
lea rcx, [rbp-0x30]
mov rsi, rax
mov r8, 0xD1FFAB1E ; code for Interop+Ldap:ldap_create_sort_control(System.DirectoryServices.Protocols.ConnectionHandle,long,ubyte,byref):int
call [r8]Interop+Ldap:ldap_create_sort_control(System.DirectoryServices.Protocols.ConnectionHandle,long,ubyte,byref):int
mov r14d, eax
test r14d, r14d
je SHORT G_M6630_IG20
;; size=50 bbWeight=1 PerfScore 9.25
G_M6630_IG19:
mov edi, r14d
mov rax, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.LdapErrorMappings:IsLdapError(int):ubyte
call [rax]System.DirectoryServices.Protocols.LdapErrorMappings:IsLdapError(int):ubyte
test eax, eax
- je G_M6630_IG25
- jmp G_M6630_IG24
+ je G_M6630_IG27
+ jmp G_M6630_IG26
;; size=28 bbWeight=0.52 PerfScore 3.51
G_M6630_IG20:
mov rdi, 0xD1FFAB1E ; System.DirectoryServices.Protocols.LdapControl
call CORINFO_HELP_NEWSFAST
mov r15, rax
xor edi, edi
mov qword ptr [r15+0x10], rdi
mov rdi, qword ptr [rbp-0x30]
test rdi, rdi
- je G_M6630_IG26
+ je G_M6630_IG28
mov rsi, r15
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
call [rax]System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
mov r14, gword ptr [r15+0x08]
xor rsi, rsi
mov gword ptr [rbx+0x08], rsi
test r14, r14
- je G_M6630_IG27
+ je G_M6630_IG32
;; size=73 bbWeight=0.48 PerfScore 6.36
G_M6630_IG21:
mov r15d, dword ptr [r14+0x08]
movsxd rsi, r15d
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
lea rdi, bword ptr [rbx+0x08]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- mov rdi, qword ptr [r14+0x10]
- mov rsi, gword ptr [rbx+0x08]
- mov ecx, r15d
- xor edx, edx
- mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:CopyToManaged[ubyte](long,ubyte[],int,int)
- call [rax]System.Runtime.InteropServices.Marshal:CopyToManaged[ubyte](long,ubyte[],int,int)
- jmp G_M6630_IG27
- ;; size=64 bbWeight=0.25 PerfScore 3.74
+ mov rsi, qword ptr [r14+0x10]
+ mov rdi, gword ptr [rbx+0x08]
+ test rsi, rsi
+ je G_M6630_IG29
+ test r15d, r15d
+ jl G_M6630_IG30
+ ;; size=60 bbWeight=0.25 PerfScore 2.93
G_M6630_IG22:
+ cmp dword ptr [rdi+0x08], r15d
+ jb G_M6630_IG31
+ ;; size=10 bbWeight=0.18 PerfScore 0.73
+G_M6630_IG23:
+ add rdi, 16
+ mov edx, r15d
+ mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ jmp G_M6630_IG32
+ ;; size=24 bbWeight=0.13 PerfScore 0.75
+G_M6630_IG24:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowOutOfMemoryException()
call [rax]System.ThrowHelper:ThrowOutOfMemoryException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M6630_IG23:
+G_M6630_IG25:
mov rdi, 0xD1FFAB1E ; System.DirectoryServices.Protocols.UtilityHandle
call CORINFO_HELP_GET_GCSTATIC_BASE
mov rax, qword ptr [rbp-0x40]
jmp G_M6630_IG18
;; size=24 bbWeight=0 PerfScore 0.00
-G_M6630_IG24:
+G_M6630_IG26:
mov edi, r14d
mov rax, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.LdapErrorMappings:MapResultCode(int):System.String
call [rax]System.DirectoryServices.Protocols.LdapErrorMappings:MapResultCode(int):System.String
mov r15, rax
mov rdi, 0xD1FFAB1E ; System.DirectoryServices.Protocols.LdapException
call CORINFO_HELP_NEWSFAST
mov r13, rax
mov rdi, r13
mov esi, r14d
mov rdx, r15
mov rax, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.LdapException:.ctor(int,System.String):this
call [rax]System.DirectoryServices.Protocols.LdapException:.ctor(int,System.String):this
mov rdi, r13
call CORINFO_HELP_THROW
int3
;; size=66 bbWeight=0 PerfScore 0.00
-G_M6630_IG25:
+G_M6630_IG27:
mov rdi, 0xD1FFAB1E ; System.DirectoryServices.Protocols.LdapException
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rdi, r15
mov esi, r14d
mov rax, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.LdapException:.ctor(int):this
call [rax]System.DirectoryServices.Protocols.LdapException:.ctor(int):this
mov rdi, r15
call CORINFO_HELP_THROW
int3
;; size=45 bbWeight=0 PerfScore 0.00
-G_M6630_IG26:
+G_M6630_IG28:
mov edi, 0xD59
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M6630_IG27:
+G_M6630_IG29:
+ mov edi, 0x13ED
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
+ call [rax]System.ArgumentNullException:Throw(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M6630_IG30:
+ mov edi, 491
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rsi, rax
+ mov edi, r15d
+ mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
+ call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
+ int3
+ ;; size=39 bbWeight=0 PerfScore 0.00
+G_M6630_IG31:
+ mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ int3
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M6630_IG32:
mov rdi, rsp
;; size=3 bbWeight=0.48 PerfScore 0.12
-G_M6630_IG28:
- call G_M6630_IG32
+G_M6630_IG33:
+ call G_M6630_IG37
nop
;; size=6 bbWeight=0.48 PerfScore 0.60
-G_M6630_IG29:
+G_M6630_IG34:
mov rdi, gword ptr [rbp-0xB0]
mov rax, 0xD1FFAB1E ; code for System.DirectoryServices.Protocols.DirectoryControl:GetValue():ubyte[]:this
call [rax]System.DirectoryServices.Protocols.DirectoryControl:GetValue():ubyte[]:this
nop
;; size=20 bbWeight=0.48 PerfScore 2.16
-G_M6630_IG30:
+G_M6630_IG35:
add rsp, 184
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.48 PerfScore 2.04
-G_M6630_IG31:
+G_M6630_IG36:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-G_M6630_IG32:
+G_M6630_IG37:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
vzeroupper
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0xE0]
;; size=28 bbWeight=1.00 PerfScore 11.50
-G_M6630_IG33:
+G_M6630_IG38:
cmp qword ptr [rbp-0x30], 0
- je SHORT G_M6630_IG35
+ je SHORT G_M6630_IG40
;; size=7 bbWeight=1.00 PerfScore 3.00
-G_M6630_IG34:
+G_M6630_IG39:
mov rdi, qword ptr [rbp-0x30]
call Interop+Ldap:ldap_control_free(long):int
;; size=9 bbWeight=0.52 PerfScore 1.04
-G_M6630_IG35:
+G_M6630_IG40:
cmp qword ptr [rbp-0x40], 0
- je G_M6630_IG45
+ je G_M6630_IG50
;; size=11 bbWeight=1.00 PerfScore 3.00
-G_M6630_IG36:
+G_M6630_IG41:
xor ebx, ebx
cmp dword ptr [rbp-0x34], 0
- jle SHORT G_M6630_IG44
+ jle SHORT G_M6630_IG49
;; size=8 bbWeight=0.52 PerfScore 1.69
-G_M6630_IG37:
+G_M6630_IG42:
lea esi, [8*rbx]
mov rdi, qword ptr [rbp-0x40]
mov rcx, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:ReadInt64(long,int):long
call [rcx]System.Runtime.InteropServices.Marshal:ReadInt64(long,int):long
mov r15, rax
test r15, r15
- je SHORT G_M6630_IG43
+ je SHORT G_M6630_IG48
;; size=31 bbWeight=4.68 PerfScore 29.25
-G_M6630_IG38:
+G_M6630_IG43:
mov rdi, r15
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:ReadInt64(long,int):long
call [rax]System.Runtime.InteropServices.Marshal:ReadInt64(long,int):long
test rax, rax
- je SHORT G_M6630_IG40
+ je SHORT G_M6630_IG45
;; size=22 bbWeight=2.43 PerfScore 12.17
-G_M6630_IG39:
+G_M6630_IG44:
mov rdi, rax
call Interop+Sys:Free(ulong)
;; size=8 bbWeight=1.01 PerfScore 1.27
-G_M6630_IG40:
+G_M6630_IG45:
mov rdi, r15
mov esi, 8
mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:ReadInt64(long,int):long
call [rax]System.Runtime.InteropServices.Marshal:ReadInt64(long,int):long
test rax, rax
- je SHORT G_M6630_IG42
+ je SHORT G_M6630_IG47
;; size=25 bbWeight=2.43 PerfScore 12.17
-G_M6630_IG41:
+G_M6630_IG46:
mov rdi, rax
call Interop+Sys:Free(ulong)
;; size=8 bbWeight=1.01 PerfScore 1.27
-G_M6630_IG42:
+G_M6630_IG47:
mov rdi, r15
call Interop+Sys:Free(ulong)
;; size=8 bbWeight=1.95 PerfScore 2.43
-G_M6630_IG43:
+G_M6630_IG48:
inc ebx
mov eax, dword ptr [rbp-0x34]
cmp ebx, eax
- jl SHORT G_M6630_IG37
+ jl SHORT G_M6630_IG42
;; size=9 bbWeight=4.68 PerfScore 11.70
-G_M6630_IG44:
+G_M6630_IG49:
mov rdi, qword ptr [rbp-0x40]
call Interop+Sys:Free(ulong)
;; size=9 bbWeight=0.42 PerfScore 0.83
-G_M6630_IG45:
+G_M6630_IG50:
nop
;; size=1 bbWeight=1.00 PerfScore 0.25
-G_M6630_IG46:
+G_M6630_IG51:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1.00 PerfScore 4.25
-; Total bytes of code 1346, prolog size 65, PerfScore 1031.75, instruction count 314, allocated bytes for code 1346 (MethodHash=0bb8e619) for method System.DirectoryServices.Protocols.SortRequestControl:GetValue():ubyte[]:this (Tier0-FullOpts)
+; Total bytes of code 1464, prolog size 65, PerfScore 1032.41, instruction count 338, allocated bytes for code 1464 (MethodHash=0bb8e619) for method System.DirectoryServices.Protocols.SortRequestControl:GetValue():ubyte[]:this (Tier0-FullOpts) 78 (8.07 % of base) - System.Runtime.InteropServices.PosixSignalRegistration:OnPosixSignal(int,int):int ; Assembly listing for method System.Runtime.InteropServices.PosixSignalRegistration:OnPosixSignal(int,int):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; optimized using Synthesized PGO
; rbp based frame
; fully interruptible
; with Synthesized PGO: fgCalledCount is 100
; No PGO data
-; 0 inlinees with PGO data; 9 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 14 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T02] ( 5, 3.80) int -> rbx single-def
; V01 arg1 [V01,T03] ( 3, 2.80) int -> r15 single-def
; V02 loc0 [V02,T05] ( 6, 3.84) ref -> [rbp-0x88] class-hnd <System.Runtime.InteropServices.PosixSignalRegistration+Token[]>
-; V03 loc1 [V03,T17] ( 4, 1.52) ref -> [rbp-0x90] class-hnd EH-live spill-single-def <System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.HashSet`1[System.Runtime.InteropServices.PosixSignalRegistration+Token]]>
+; V03 loc1 [V03,T19] ( 4, 1.52) ref -> [rbp-0x90] class-hnd EH-live spill-single-def <System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.HashSet`1[System.Runtime.InteropServices.PosixSignalRegistration+Token]]>
; V04 loc2 [V04 ] ( 5, 4 ) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op
; V05 loc3 [V05,T10] ( 4, 2.08) ref -> r13 ld-addr-op class-hnd <System.Collections.Generic.HashSet`1[System.Runtime.InteropServices.PosixSignalRegistration+Token]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T16] ( 2, 1.54) ref -> r15 class-hnd exact single-def "dup spill" <System.Threading.WaitCallback>
-; V08 tmp2 [V08,T19] ( 4, 1.35) ref -> r15
+; V07 tmp1 [V07,T18] ( 2, 1.54) ref -> r15 class-hnd exact single-def "dup spill" <System.Threading.WaitCallback>
+; V08 tmp2 [V08,T20] ( 4, 1.35) ref -> r15
;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]>
; V10 tmp4 [V10,T07] ( 4, 3.07) ref -> r13 class-hnd exact single-def "Single-def Box Helper" <System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]>
; V11 tmp5 [V11,T09] ( 7, 2.80) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Threading.WaitCallback>
-; V12 tmp6 [V12,T14] ( 2, 1.66) ref -> r15 class-hnd exact single-def "dup spill" <System.Threading.ParameterizedThreadStart>
-; V13 tmp7 [V13,T18] ( 4, 1.46) ref -> r15
-; V14 tmp8 [V14,T01] ( 7, 5.82) ref -> [rbp-0x98] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Thread>
+; V12 tmp6 [V12,T16] ( 2, 1.66) ref -> r15 class-hnd exact single-def "dup spill" <System.Threading.ParameterizedThreadStart>
+; V13 tmp7 [V13,T13] ( 5, 1.88) ref -> r15
+; V14 tmp8 [V14,T00] ( 8, 6.66) ref -> [rbp-0x98] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Thread>
;* V15 tmp9 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]>
; V16 tmp10 [V16,T06] ( 4, 3.16) ref -> r15 class-hnd exact single-def "Single-def Box Helper" <System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]>
; V17 tmp11 [V17,T08] ( 7, 3.03) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Threading.ParameterizedThreadStart>
-;* V18 tmp12 [V18,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T00] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.HashSet`1[System.Runtime.InteropServices.PosixSignalRegistration+Token]]>
+;* V18 tmp12 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T01] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[int,System.Collections.Generic.HashSet`1[System.Runtime.InteropServices.PosixSignalRegistration+Token]]>
; V20 tmp14 [V20,T11] ( 3, 2.52) byref -> rax single-def "Inline stloc first use temp"
;* V21 tmp15 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Collections.Generic.HashSet`1[System.Runtime.InteropServices.PosixSignalRegistration+Token]>
;* V22 tmp16 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Collections.Generic.HashSet`1[System.Runtime.InteropServices.PosixSignalRegistration+Token]>
-;* V23 tmp17 [V23 ] ( 0, 0 ) struct ( 8) zero-ref <System.Threading.ThreadHandle>
+; V23 tmp17 [V23,T12] ( 3, 2.50) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Thread+StartHelper>
;* V24 tmp18 [V24 ] ( 0, 0 ) struct ( 8) zero-ref <System.Threading.ThreadHandle>
-;* V25 tmp19 [V25 ] ( 0, 0 ) int -> zero-ref
-;* V26 tmp20 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]>
-; V27 tmp21 [V27,T12] ( 5, 1.83) ref -> rbx class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Thread+StartHelper>
-; V28 tmp22 [V28,T13] ( 3, 1.66) ref -> r14 single-def "ISINST eval op1"
-;* V29 tmp23 [V29,T28] ( 0, 0 ) int -> zero-ref "spilling qmarkNull"
-;* V30 tmp24 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]>
-;* V31 tmp25 [V31 ] ( 0, 0 ) ref -> zero-ref
+;* V25 tmp19 [V25 ] ( 0, 0 ) struct ( 8) zero-ref <System.Threading.ThreadHandle>
+;* V26 tmp20 [V26 ] ( 0, 0 ) int -> zero-ref
+;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]>
+; V28 tmp22 [V28,T14] ( 5, 1.83) ref -> rbx class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Thread+StartHelper>
+; V29 tmp23 [V29,T15] ( 3, 1.66) ref -> r14 single-def "ISINST eval op1"
+;* V30 tmp24 [V30,T29] ( 0, 0 ) int -> zero-ref "spilling qmarkNull"
+;* V31 tmp25 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]>
;* V32 tmp26 [V32 ] ( 0, 0 ) ref -> zero-ref
;* V33 tmp27 [V33 ] ( 0, 0 ) ref -> zero-ref
-; V34 tmp28 [V34,T29] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
-; V35 tmp29 [V35,T04] ( 3, 4 ) int -> r12 "Single return block return value"
-; V36 PInvokeFrame [V36 ] ( 3, 1.83) struct (64) [rbp-0x70] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V37 tmp31 [V37 ] ( 3, 3 ) struct (16) [rbp-0x80] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar"
-; V38 tmp32 [V38,T26] ( 2, 0.77) ref -> r14 single-def "field V09.Item2 (fldOffset=0x0)" P-INDEP
-; V39 tmp33 [V39,T27] ( 2, 0.77) int -> rbx "field V09.Item1 (fldOffset=0x8)" P-INDEP
-; V40 tmp34 [V40,T23] ( 2, 0.83) ref -> r14 single-def "field V15.Item2 (fldOffset=0x0)" P-INDEP
-; V41 tmp35 [V41,T24] ( 2, 0.83) int -> rbx "field V15.Item1 (fldOffset=0x8)" P-INDEP
-; V42 tmp36 [V42,T25] ( 2, 0.83) long -> rdi "field V23._ptr (fldOffset=0x0)" P-INDEP
-;* V43 tmp37 [V43 ] ( 0, 0 ) long -> zero-ref "field V24._ptr (fldOffset=0x0)" P-INDEP
-; V44 tmp38 [V44,T30] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V45 PSPSym [V45,T22] ( 1, 1 ) long -> [rbp-0xB0] do-not-enreg[V] "PSPSym"
-;* V46 cse0 [V46,T21] ( 0, 0 ) byref -> zero-ref "CSE #02: moderate"
-; V47 cse1 [V47,T15] ( 3, 1.56) int -> r12 "CSE #06: moderate"
+;* V34 tmp28 [V34 ] ( 0, 0 ) ref -> zero-ref
+; V35 tmp29 [V35,T30] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
+; V36 tmp30 [V36,T04] ( 3, 4 ) int -> r12 "Single return block return value"
+; V37 PInvokeFrame [V37 ] ( 3, 1.83) struct (64) [rbp-0x70] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V38 tmp32 [V38 ] ( 3, 3 ) struct (16) [rbp-0x80] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar"
+; V39 tmp33 [V39,T27] ( 2, 0.77) ref -> r14 single-def "field V09.Item2 (fldOffset=0x0)" P-INDEP
+; V40 tmp34 [V40,T28] ( 2, 0.77) int -> rbx "field V09.Item1 (fldOffset=0x8)" P-INDEP
+; V41 tmp35 [V41,T24] ( 2, 0.83) ref -> r14 single-def "field V15.Item2 (fldOffset=0x0)" P-INDEP
+; V42 tmp36 [V42,T25] ( 2, 0.83) int -> rbx "field V15.Item1 (fldOffset=0x8)" P-INDEP
+; V43 tmp37 [V43,T26] ( 2, 0.83) long -> rdi "field V24._ptr (fldOffset=0x0)" P-INDEP
+;* V44 tmp38 [V44 ] ( 0, 0 ) long -> zero-ref "field V25._ptr (fldOffset=0x0)" P-INDEP
+; V45 tmp39 [V45,T31] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V46 PSPSym [V46,T23] ( 1, 1 ) long -> [rbp-0xB0] do-not-enreg[V] "PSPSym"
+;* V47 cse0 [V47,T22] ( 0, 0 ) byref -> zero-ref "CSE #02: moderate"
+; V48 cse1 [V48,T17] ( 3, 1.56) int -> r12 "CSE #06: moderate"
; TEMP_01 int -> [rbp-0x9C]
; TEMP_02 long -> [rbp-0xA4]
;
; Lcl frame size = 136
G_M16214_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 136
vzeroupper
lea rbp, [rsp+0xB0]
mov qword ptr [rbp-0xB0], rsp
mov ebx, edi
mov r15d, esi
;; size=40 bbWeight=1 PerfScore 9.25
G_M16214_IG02:
lea rdi, [rbp-0x80]
call CORINFO_HELP_JIT_REVERSE_PINVOKE_ENTER
xor r14, r14
mov rsi, 0xD1FFAB1E ; global ptr
test byte ptr [rsi], 1
je G_M16214_IG27
;; size=31 bbWeight=1 PerfScore 6.00
G_M16214_IG03:
mov rsi, 0xD1FFAB1E ; data for System.Runtime.InteropServices.PosixSignalRegistration:s_registrations
mov rdi, gword ptr [rsi]
mov gword ptr [rbp-0x90], rdi
xor esi, esi
mov dword ptr [rbp-0x30], esi
;; size=25 bbWeight=1 PerfScore 4.50
G_M16214_IG04:
cmp byte ptr [rbp-0x30], 0
jne SHORT G_M16214_IG06
lea rsi, [rbp-0x30]
call System.Threading.Monitor:ReliableEnter(System.Object,byref)
mov rdi, 0xD1FFAB1E ; data for System.Runtime.InteropServices.PosixSignalRegistration:s_registrations
mov rdi, gword ptr [rdi]
cmp byte ptr [rdi], dil
mov esi, ebx
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2[int,System.__Canon]:FindValue(int):byref:this
call [rax]System.Collections.Generic.Dictionary`2[int,System.__Canon]:FindValue(int):byref:this
test rax, rax
je SHORT G_M16214_IG07
;; size=50 bbWeight=1 PerfScore 14.50
G_M16214_IG05:
mov r13, gword ptr [rax]
mov r12d, dword ptr [r13+0x28]
sub r12d, dword ptr [r13+0x30]
movsxd rsi, r12d
mov rdi, 0xD1FFAB1E ; System.Runtime.InteropServices.PosixSignalRegistration+Token[]
call CORINFO_HELP_NEWARR_1_OBJ
mov r14, rax
mov ecx, r12d
mov rdi, r13
mov rsi, r14
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.HashSet`1[System.__Canon]:CopyTo(System.__Canon[],int,int):this
call [rax]System.Collections.Generic.HashSet`1[System.__Canon]:CopyTo(System.__Canon[],int,int):this
jmp SHORT G_M16214_IG07
;; size=57 bbWeight=0.52 PerfScore 7.80
G_M16214_IG06:
mov rax, 0xD1FFAB1E ; code for System.Threading.Monitor:ThrowLockTakenException()
call [rax]System.Threading.Monitor:ThrowLockTakenException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M16214_IG07:
cmp byte ptr [rbp-0x30], 0
je SHORT G_M16214_IG09
;; size=6 bbWeight=1 PerfScore 3.00
G_M16214_IG08:
mov rdi, gword ptr [rbp-0x90]
call System.Threading.Monitor:Exit(System.Object)
;; size=12 bbWeight=0.52 PerfScore 1.04
G_M16214_IG09:
mov gword ptr [rbp-0x88], r14
test r14, r14
je G_M16214_IG26
;; size=16 bbWeight=1 PerfScore 2.25
G_M16214_IG10:
add r15d, 4
cmp r15d, 2
ja G_M16214_IG23
;; size=14 bbWeight=0.80 PerfScore 1.20
G_M16214_IG11:
mov rdi, 0xD1FFAB1E ; data for System.Runtime.InteropServices.PosixSignalRegistration+<>O:<0>__HandleSignal
mov r15, gword ptr [rdi]
test r15, r15
jne SHORT G_M16214_IG13
;; size=18 bbWeight=0.42 PerfScore 1.46
G_M16214_IG12:
mov rdi, 0xD1FFAB1E ; System.Threading.ParameterizedThreadStart
call CORINFO_HELP_NEWSFAST
mov r15, rax
lea rdi, bword ptr [r15+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; function address
mov qword ptr [r15+0x18], rdi
mov rdi, 0xD1FFAB1E ; code for System.Runtime.InteropServices.PosixSignalRegistration:<OnPosixSignal>g__HandleSignal|10_0(System.Object)
mov qword ptr [r15+0x20], rdi
mov rdi, 0xD1FFAB1E ; data for System.Runtime.InteropServices.PosixSignalRegistration+<>O:<0>__HandleSignal
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
;; size=76 bbWeight=0.22 PerfScore 1.57
G_M16214_IG13:
mov rdi, 0xD1FFAB1E ; System.Threading.Thread
call CORINFO_HELP_NEWFAST
mov r13, rax
mov gword ptr [rbp-0x98], r13
- mov rdi, r13
+ test r15, r15
+ je G_M16214_IG28
+ mov rdi, 0xD1FFAB1E ; System.Threading.Thread+StartHelper
+ call CORINFO_HELP_NEWSFAST
+ mov r12, rax
+ lea rdi, bword ptr [r12+0x08]
mov rsi, r15
- mov rax, 0xD1FFAB1E ; code for System.Threading.Thread:.ctor(System.Threading.ParameterizedThreadStart):this
- call [rax]System.Threading.Thread:.ctor(System.Threading.ParameterizedThreadStart):this
+ call CORINFO_HELP_ASSIGN_REF
+ lea rdi, bword ptr [r13+0x20]
+ mov rsi, r12
+ call CORINFO_HELP_ASSIGN_REF
+ mov rdi, r13
+ call System.Threading.Thread:Initialize():this
mov rdi, r13
mov rax, 0xD1FFAB1E ; code for System.Threading.Thread:GetNativeHandle():System.Threading.ThreadHandle:this
call [rax]System.Threading.Thread:GetNativeHandle():System.Threading.ThreadHandle:this
mov rdi, rax
mov qword ptr [rbp-0xA4], rdi
mov esi, 1
mov dword ptr [rbp-0x9C], esi
lea rdi, [rbp-0x70]
- ;; size=83 bbWeight=0.42 PerfScore 5.30
+ ;; size=125 bbWeight=0.42 PerfScore 6.86
G_M16214_IG14:
call CORINFO_HELP_JIT_PINVOKE_BEGIN
mov rax, 0xD1FFAB1E ; function address
mov rdi, qword ptr [rbp-0xA4]
mov esi, dword ptr [rbp-0x9C]
;; size=28 bbWeight=0.42 PerfScore 1.35
G_M16214_IG15:
call rax ; System.Threading.Thread:SetIsBackground(System.Threading.ThreadHandle,int)
lea rdi, [rbp-0x70]
call CORINFO_HELP_JIT_PINVOKE_END
mov r13, gword ptr [rbp-0x98]
mov rdi, r13
mov rsi, 0xD1FFAB1E ; '.NET Signal Handler'
mov rax, 0xD1FFAB1E ; code for System.Threading.Thread:set_Name(System.String):this
call [rax]System.Threading.Thread:set_Name(System.String):this
mov r14, gword ptr [rbp-0x88]
mov rdi, 0xD1FFAB1E ; System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]
call CORINFO_HELP_NEWSFAST
mov r15, rax
lea rdi, bword ptr [r15+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov dword ptr [r15+0x10], ebx
mov rbx, gword ptr [r13+0x20]
test rbx, rbx
je SHORT G_M16214_IG18
;; size=93 bbWeight=0.42 PerfScore 7.38
G_M16214_IG16:
mov r14, gword ptr [rbx+0x08]
test r14, r14
jne SHORT G_M16214_IG22
;; size=9 bbWeight=0.33 PerfScore 1.08
G_M16214_IG17:
lea rdi, bword ptr [rbx+0x10]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
xor rdi, rdi
mov gword ptr [rbx+0x28], rdi
;; size=18 bbWeight=0.33 PerfScore 1.00
G_M16214_IG18:
mov rdi, r13
mov rax, 0xD1FFAB1E ; code for System.Threading.Thread:StartCore():this
call [rax]System.Threading.Thread:StartCore():this
;; size=15 bbWeight=0.42 PerfScore 1.46
G_M16214_IG19:
mov r12d, 1
;; size=6 bbWeight=0.80 PerfScore 0.20
G_M16214_IG20:
lea rdi, [rbp-0x80]
call CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT
mov eax, r12d
;; size=12 bbWeight=1 PerfScore 1.75
G_M16214_IG21:
add rsp, 136
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 4.25
G_M16214_IG22:
mov rdi, 0xD1FFAB1E ; System.Threading.ThreadStart
cmp qword ptr [r14], rdi
- je G_M16214_IG28
+ je G_M16214_IG29
jmp SHORT G_M16214_IG17
;; size=21 bbWeight=0.17 PerfScore 1.04
G_M16214_IG23:
mov rdi, 0xD1FFAB1E ; data for System.Runtime.InteropServices.PosixSignalRegistration+<>O:<1>__HandleSignal
mov r15, gword ptr [rdi]
test r15, r15
jne SHORT G_M16214_IG25
;; size=18 bbWeight=0.38 PerfScore 1.34
G_M16214_IG24:
mov rdi, 0xD1FFAB1E ; System.Threading.WaitCallback
call CORINFO_HELP_NEWSFAST
mov r15, rax
lea rdi, bword ptr [r15+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; function address
mov qword ptr [r15+0x18], rdi
mov rdi, 0xD1FFAB1E ; code for System.Runtime.InteropServices.PosixSignalRegistration:<OnPosixSignal>g__HandleSignal|10_0(System.Object)
mov qword ptr [r15+0x20], rdi
mov rdi, 0xD1FFAB1E ; data for System.Runtime.InteropServices.PosixSignalRegistration+<>O:<1>__HandleSignal
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
;; size=76 bbWeight=0.20 PerfScore 1.45
G_M16214_IG25:
mov r14, gword ptr [rbp-0x88]
mov rdi, 0xD1FFAB1E ; System.ValueTuple`2[int,System.Runtime.InteropServices.PosixSignalRegistration+Token[]]
call CORINFO_HELP_NEWSFAST
mov r13, rax
lea rdi, bword ptr [r13+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov dword ptr [r13+0x10], ebx
mov rsi, r13
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Threading.ThreadPool:UnsafeQueueUserWorkItem(System.Threading.WaitCallback,System.Object):ubyte
call [rax]System.Threading.ThreadPool:UnsafeQueueUserWorkItem(System.Threading.WaitCallback,System.Object):ubyte
jmp G_M16214_IG19
;; size=64 bbWeight=0.38 PerfScore 4.22
G_M16214_IG26:
xor r12d, r12d
jmp G_M16214_IG20
;; size=8 bbWeight=0.20 PerfScore 0.45
G_M16214_IG27:
mov rdi, 0xD1FFAB1E ; System.Runtime.InteropServices.PosixSignalRegistration
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M16214_IG03
;; size=20 bbWeight=0 PerfScore 0.00
G_M16214_IG28:
+ mov edi, 0x134EC
+ mov rsi, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
+ call [rax]System.ArgumentNullException:Throw(System.String)
+ int3
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M16214_IG29:
mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_InvalidOperation_ThreadWrongThreadStart():System.String
call [rax]System.SR:get_InvalidOperation_ThreadWrongThreadStart():System.String
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor(System.String):this
call [rax]System.InvalidOperationException:.ctor(System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=57 bbWeight=0 PerfScore 0.00
-G_M16214_IG29:
+G_M16214_IG30:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
vzeroupper
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0xB0]
;; size=28 bbWeight=0 PerfScore 0.00
-G_M16214_IG30:
+G_M16214_IG31:
cmp byte ptr [rbp-0x30], 0
- je SHORT G_M16214_IG31
+ je SHORT G_M16214_IG32
mov rdi, gword ptr [rbp-0x90]
call System.Threading.Monitor:Exit(System.Object)
;; size=18 bbWeight=0 PerfScore 0.00
-G_M16214_IG31:
+G_M16214_IG32:
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M16214_IG32:
+G_M16214_IG33:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 966, prolog size 40, PerfScore 84.85, instruction count 216, allocated bytes for code 966 (MethodHash=a627c0a9) for method System.Runtime.InteropServices.PosixSignalRegistration:OnPosixSignal(int,int):int (FullOpts)
+; Total bytes of code 1044, prolog size 40, PerfScore 86.41, instruction count 232, allocated bytes for code 1044 (MethodHash=a627c0a9) for method System.Runtime.InteropServices.PosixSignalRegistration:OnPosixSignal(int,int):int (FullOpts) Larger list of diffs: https://gist.github.com/MihuBot/3ff1eb651a2ac59718af1d79a2c18545 |
Top method improvements-59 (-45.38 % of base) - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this ; Assembly listing for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier0 code
; rbp based frame
; partially interruptible
; Final local variable assignments
;
; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] this class-hnd <System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]>
; V01 arg1 [V01 ] ( 1, 1 ) double -> [rbp-0x10] do-not-enreg[]
; V02 arg2 [V02 ] ( 1, 1 ) struct ( 8) [rbp-0x18] do-not-enreg[S] <System.Nullable`1[int]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "Reusable Box Helper"
;
; Lcl frame size = 32
G_M2528_IG01:
push rbp
sub rsp, 32
lea rbp, [rsp+0x20]
xor eax, eax
mov qword ptr [rbp-0x20], rax
mov gword ptr [rbp-0x08], rdi
vmovsd qword ptr [rbp-0x10], xmm0
mov qword ptr [rbp-0x18], rsi
;; size=29 bbWeight=1 PerfScore 6.00
G_M2528_IG02:
- mov rdi, 0xD1FFAB1E ; System.Double
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x20], rax
- mov rax, gword ptr [rbp-0x20]
- vmovsd xmm0, qword ptr [rbp-0x10]
- vmovsd qword ptr [rax+0x08], xmm0
- mov rdi, gword ptr [rbp-0x20]
- mov rsi, 0xD1FFAB1E ; 'key'
- mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov rdi, gword ptr [rbp-0x08]
mov rdx, qword ptr [rbp-0x18]
vmovsd xmm0, qword ptr [rbp-0x10]
mov esi, -1
mov ecx, 2
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryInsert(int,double,System.Nullable`1[int],int):ubyte:this
call [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryInsert(int,double,System.Nullable`1[int],int):ubyte:this
nop
- ;; size=95 bbWeight=1 PerfScore 21.75
+ ;; size=36 bbWeight=1 PerfScore 9.00
G_M2528_IG03:
add rsp, 32
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 130, prolog size 16, PerfScore 29.50, instruction count 29, allocated bytes for code 130 (MethodHash=d20cf61f) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
+; Total bytes of code 71, prolog size 16, PerfScore 16.75, instruction count 19, allocated bytes for code 71 (MethodHash=d20cf61f) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0) -59 (-47.20 % of base) - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double):int:this ; Assembly listing for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double):int:this (Tier0)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier0 code
; rbp based frame
; partially interruptible
; Final local variable assignments
;
; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] this class-hnd <System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]>
; V01 arg1 [V01 ] ( 1, 1 ) double -> [rbp-0x10] do-not-enreg[]
; V02 loc0 [V02 ] ( 1, 1 ) int -> [rbp-0x18] do-not-enreg[X] addr-exposed ld-addr-op
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "Reusable Box Helper"
;
; Lcl frame size = 32
G_M1197_IG01:
push rbp
sub rsp, 32
lea rbp, [rsp+0x20]
xor eax, eax
mov qword ptr [rbp-0x20], rax
mov gword ptr [rbp-0x08], rdi
vmovsd qword ptr [rbp-0x10], xmm0
;; size=25 bbWeight=1 PerfScore 5.00
G_M1197_IG02:
- mov rdi, 0xD1FFAB1E ; System.Double
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x20], rax
- mov rax, gword ptr [rbp-0x20]
- vmovsd xmm0, qword ptr [rbp-0x10]
- vmovsd qword ptr [rax+0x08], xmm0
- mov rdi, gword ptr [rbp-0x20]
- mov rsi, 0xD1FFAB1E ; 'key'
- mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
xor eax, eax
mov dword ptr [rbp-0x18], eax
lea rsi, [rbp-0x18]
lea rdx, [rbp-0x18]
mov rdi, gword ptr [rbp-0x08]
vmovsd xmm0, qword ptr [rbp-0x10]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double,byref,byref):int:this
call [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double,byref,byref):int:this
nop
- ;; size=94 bbWeight=1 PerfScore 22.50
+ ;; size=35 bbWeight=1 PerfScore 9.75
G_M1197_IG03:
add rsp, 32
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 125, prolog size 16, PerfScore 29.25, instruction count 29, allocated bytes for code 125 (MethodHash=654cfb52) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double):int:this (Tier0)
+; Total bytes of code 66, prolog size 16, PerfScore 16.50, instruction count 19, allocated bytes for code 66 (MethodHash=654cfb52) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double):int:this (Tier0) -59 (-38.06 % of base) - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Insert(int,double,System.Nullable`1[int]):this ; Assembly listing for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Insert(int,double,System.Nullable`1[int]):this (Tier0)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier0 code
; rbp based frame
; partially interruptible
; Final local variable assignments
;
; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] this class-hnd <System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]>
; V01 arg1 [V01 ] ( 1, 1 ) int -> [rbp-0x0C] do-not-enreg[]
; V02 arg2 [V02 ] ( 1, 1 ) double -> [rbp-0x18] do-not-enreg[]
; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [rbp-0x20] do-not-enreg[S] <System.Nullable`1[int]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "Reusable Box Helper"
;
; Lcl frame size = 48
G_M61129_IG01:
push rbp
sub rsp, 48
lea rbp, [rsp+0x30]
xor eax, eax
mov qword ptr [rbp-0x28], rax
mov gword ptr [rbp-0x08], rdi
mov dword ptr [rbp-0x0C], esi
vmovsd qword ptr [rbp-0x18], xmm0
mov qword ptr [rbp-0x20], rdx
;; size=32 bbWeight=1 PerfScore 7.00
G_M61129_IG02:
mov eax, dword ptr [rbp-0x0C]
mov rcx, gword ptr [rbp-0x08]
cmp eax, dword ptr [rcx+0x38]
jbe SHORT G_M61129_IG03
mov rax, 0xD1FFAB1E ; code for System.Collections.ThrowHelper:ThrowIndexArgumentOutOfRange()
call [rax]System.Collections.ThrowHelper:ThrowIndexArgumentOutOfRange()
;; size=24 bbWeight=1 PerfScore 9.25
G_M61129_IG03:
- mov rdi, 0xD1FFAB1E ; System.Double
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x28], rax
- mov rax, gword ptr [rbp-0x28]
- vmovsd xmm0, qword ptr [rbp-0x18]
- vmovsd qword ptr [rax+0x08], xmm0
- mov rdi, gword ptr [rbp-0x28]
- mov rsi, 0xD1FFAB1E ; 'key'
- mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov rdi, gword ptr [rbp-0x08]
mov esi, dword ptr [rbp-0x0C]
vmovsd xmm0, qword ptr [rbp-0x18]
mov rdx, qword ptr [rbp-0x20]
mov ecx, 2
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryInsert(int,double,System.Nullable`1[int],int):ubyte:this
call [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryInsert(int,double,System.Nullable`1[int],int):ubyte:this
nop
- ;; size=93 bbWeight=1 PerfScore 22.50
+ ;; size=34 bbWeight=1 PerfScore 9.75
G_M61129_IG04:
add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 155, prolog size 16, PerfScore 40.50, instruction count 36, allocated bytes for code 155 (MethodHash=91e81136) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Insert(int,double,System.Nullable`1[int]):this (Tier0)
+; Total bytes of code 96, prolog size 16, PerfScore 27.75, instruction count 26, allocated bytes for code 96 (MethodHash=91e81136) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Insert(int,double,System.Nullable`1[int]):this (Tier0) -59 (-28.23 % of base) - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Remove(double,byref):ubyte:this ; Assembly listing for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Remove(double,byref):ubyte:this (Tier0)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier0 code
; rbp based frame
; partially interruptible
; Final local variable assignments
;
; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] this class-hnd <System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]>
; V01 arg1 [V01 ] ( 1, 1 ) double -> [rbp-0x10] do-not-enreg[]
; V02 arg2 [V02 ] ( 1, 1 ) byref -> [rbp-0x18] do-not-enreg[]
; V03 loc0 [V03 ] ( 1, 1 ) int -> [rbp-0x1C] do-not-enreg[]
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "Reusable Box Helper"
;
; Lcl frame size = 48
G_M50550_IG01:
push rbp
sub rsp, 48
lea rbp, [rsp+0x30]
xor eax, eax
mov qword ptr [rbp-0x28], rax
mov gword ptr [rbp-0x08], rdi
vmovsd qword ptr [rbp-0x10], xmm0
mov bword ptr [rbp-0x18], rsi
;; size=29 bbWeight=1 PerfScore 6.00
G_M50550_IG02:
- mov rdi, 0xD1FFAB1E ; System.Double
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x28], rax
- mov rax, gword ptr [rbp-0x28]
- vmovsd xmm0, qword ptr [rbp-0x10]
- vmovsd qword ptr [rax+0x08], xmm0
- mov rdi, gword ptr [rbp-0x28]
- mov rsi, 0xD1FFAB1E ; 'key'
- mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov rdi, gword ptr [rbp-0x08]
vmovsd xmm0, qword ptr [rbp-0x10]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double):int:this
call [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double):int:this
mov dword ptr [rbp-0x1C], eax
cmp dword ptr [rbp-0x1C], 0
jl SHORT G_M50550_IG04
mov rax, gword ptr [rbp-0x08]
mov rax, gword ptr [rax+0x18]
mov ecx, dword ptr [rbp-0x1C]
cmp ecx, dword ptr [rax+0x08]
jae SHORT G_M50550_IG06
mov edx, ecx
imul rdx, rdx, 24
lea rax, bword ptr [rax+rdx+0x10]
mov rcx, bword ptr [rbp-0x18]
mov rdx, qword ptr [rax+0x10]
mov qword ptr [rcx], rdx
mov rdi, gword ptr [rbp-0x08]
mov esi, dword ptr [rbp-0x1C]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:RemoveAt(int):this
call [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:RemoveAt(int):this
mov eax, 1
- ;; size=151 bbWeight=1 PerfScore 44.75
+ ;; size=92 bbWeight=1 PerfScore 32.00
G_M50550_IG03:
add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
G_M50550_IG04:
mov rax, bword ptr [rbp-0x18]
xor ecx, ecx
mov qword ptr [rax], rcx
xor eax, eax
;; size=11 bbWeight=1 PerfScore 2.50
G_M50550_IG05:
add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
G_M50550_IG06:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 209, prolog size 16, PerfScore 56.75, instruction count 53, allocated bytes for code 209 (MethodHash=70e43a89) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Remove(double,byref):ubyte:this (Tier0)
+; Total bytes of code 150, prolog size 16, PerfScore 44.00, instruction count 43, allocated bytes for code 150 (MethodHash=70e43a89) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:Remove(double,byref):ubyte:this (Tier0) -59 (-45.38 % of base) - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:set_Item(double,System.Nullable`1[int]):this ; Assembly listing for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:set_Item(double,System.Nullable`1[int]):this (Tier0)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier0 code
; rbp based frame
; partially interruptible
; Final local variable assignments
;
; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] this class-hnd <System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]>
; V01 arg1 [V01 ] ( 1, 1 ) double -> [rbp-0x10] do-not-enreg[]
; V02 arg2 [V02 ] ( 1, 1 ) struct ( 8) [rbp-0x18] do-not-enreg[S] <System.Nullable`1[int]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "Reusable Box Helper"
;
; Lcl frame size = 32
G_M35017_IG01:
push rbp
sub rsp, 32
lea rbp, [rsp+0x20]
xor eax, eax
mov qword ptr [rbp-0x20], rax
mov gword ptr [rbp-0x08], rdi
vmovsd qword ptr [rbp-0x10], xmm0
mov qword ptr [rbp-0x18], rsi
;; size=29 bbWeight=1 PerfScore 6.00
G_M35017_IG02:
- mov rdi, 0xD1FFAB1E ; System.Double
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x20], rax
- mov rax, gword ptr [rbp-0x20]
- vmovsd xmm0, qword ptr [rbp-0x10]
- vmovsd qword ptr [rax+0x08], xmm0
- mov rdi, gword ptr [rbp-0x20]
- mov rsi, 0xD1FFAB1E ; 'key'
- mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov rdi, gword ptr [rbp-0x08]
mov rdx, qword ptr [rbp-0x18]
vmovsd xmm0, qword ptr [rbp-0x10]
mov esi, -1
mov ecx, 1
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryInsert(int,double,System.Nullable`1[int],int):ubyte:this
call [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryInsert(int,double,System.Nullable`1[int],int):ubyte:this
nop
- ;; size=95 bbWeight=1 PerfScore 21.75
+ ;; size=36 bbWeight=1 PerfScore 9.00
G_M35017_IG03:
add rsp, 32
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 130, prolog size 16, PerfScore 29.50, instruction count 29, allocated bytes for code 130 (MethodHash=bbc07736) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:set_Item(double,System.Nullable`1[int]):this (Tier0)
+; Total bytes of code 71, prolog size 16, PerfScore 16.75, instruction count 19, allocated bytes for code 71 (MethodHash=bbc07736) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:set_Item(double,System.Nullable`1[int]):this (Tier0) -59 (-12.22 % of base) - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:SetAt(int,double,System.Nullable`1[int]):this ; Assembly listing for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:SetAt(int,double,System.Nullable`1[int]):this (Tier0)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier0 code
; rbp based frame
; partially interruptible
; Final local variable assignments
;
; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] this class-hnd <System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]>
; V01 arg1 [V01 ] ( 1, 1 ) int -> [rbp-0x0C] do-not-enreg[]
; V02 arg2 [V02 ] ( 1, 1 ) double -> [rbp-0x18] do-not-enreg[]
; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [rbp-0x20] do-not-enreg[S] <System.Nullable`1[int]>
; V04 loc0 [V04 ] ( 1, 1 ) byref -> [rbp-0x28] do-not-enreg[] must-init
; V05 loc1 [V05 ] ( 1, 1 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op
; V06 loc2 [V06 ] ( 1, 1 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08 ] ( 1, 1 ) ref -> [rbp-0x40] do-not-enreg[] must-init "Reusable Box Helper"
; V09 tmp2 [V09 ] ( 1, 1 ) ref -> [rbp-0x48] do-not-enreg[] must-init "argument with side effect"
;
; Lcl frame size = 80
G_M37961_IG01:
push rbp
sub rsp, 80
lea rbp, [rsp+0x50]
xor eax, eax
mov qword ptr [rbp-0x48], rax
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x40], ymm8
mov gword ptr [rbp-0x08], rdi
mov dword ptr [rbp-0x0C], esi
vmovsd qword ptr [rbp-0x18], xmm0
mov qword ptr [rbp-0x20], rdx
;; size=42 bbWeight=1 PerfScore 9.33
G_M37961_IG02:
mov eax, dword ptr [rbp-0x0C]
mov rcx, gword ptr [rbp-0x08]
cmp eax, dword ptr [rcx+0x38]
jb SHORT G_M37961_IG03
mov rax, 0xD1FFAB1E ; code for System.Collections.ThrowHelper:ThrowIndexArgumentOutOfRange()
call [rax]System.Collections.ThrowHelper:ThrowIndexArgumentOutOfRange()
;; size=24 bbWeight=1 PerfScore 9.25
G_M37961_IG03:
- mov rdi, 0xD1FFAB1E ; System.Double
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x40], rax
- mov rax, gword ptr [rbp-0x40]
- vmovsd xmm0, qword ptr [rbp-0x18]
- vmovsd qword ptr [rax+0x08], xmm0
- mov rdi, gword ptr [rbp-0x40]
- mov rsi, 0xD1FFAB1E ; 'key'
- mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov rax, gword ptr [rbp-0x08]
mov rax, gword ptr [rax+0x18]
mov ecx, dword ptr [rbp-0x0C]
cmp ecx, dword ptr [rax+0x08]
jae G_M37961_IG10
mov edx, ecx
imul rdx, rdx, 24
lea rax, bword ptr [rax+rdx+0x10]
mov bword ptr [rbp-0x28], rax
mov rax, gword ptr [rbp-0x08]
cmp gword ptr [rax+0x08], 0
jne SHORT G_M37961_IG05
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.EqualityComparer`1[double]:get_Default():System.Collections.Generic.EqualityComparer`1[double]
call [rax]System.Collections.Generic.EqualityComparer`1[double]:get_Default():System.Collections.Generic.EqualityComparer`1[double]
mov gword ptr [rbp-0x48], rax
mov rdi, gword ptr [rbp-0x48]
mov rax, bword ptr [rbp-0x28]
vmovsd xmm1, qword ptr [rax+0x08]
vmovsd xmm0, qword ptr [rbp-0x18]
mov rax, gword ptr [rbp-0x48]
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x40]
call [rax+0x20]System.Collections.Generic.EqualityComparer`1[double]:Equals(double,double):ubyte:this
test eax, eax
je SHORT G_M37961_IG07
mov rax, bword ptr [rbp-0x28]
mov rcx, qword ptr [rbp-0x20]
mov qword ptr [rax+0x10], rcx
- ;; size=169 bbWeight=1 PerfScore 55.50
+ ;; size=110 bbWeight=1 PerfScore 42.75
G_M37961_IG04:
add rsp, 80
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
G_M37961_IG05:
mov rax, gword ptr [rbp-0x08]
mov rdi, gword ptr [rax+0x08]
mov rax, bword ptr [rbp-0x28]
vmovsd xmm1, qword ptr [rax+0x08]
vmovsd xmm0, qword ptr [rbp-0x18]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEqualityComparer`1[double]:Equals(double,double):ubyte:this
call [r11]System.Collections.Generic.IEqualityComparer`1[double]:Equals(double,double):ubyte:this
test eax, eax
je SHORT G_M37961_IG07
mov rax, bword ptr [rbp-0x28]
mov rcx, qword ptr [rbp-0x20]
mov qword ptr [rax+0x10], rcx
;; size=51 bbWeight=1 PerfScore 18.50
G_M37961_IG06:
add rsp, 80
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
G_M37961_IG07:
xor eax, eax
mov dword ptr [rbp-0x30], eax
xor eax, eax
mov dword ptr [rbp-0x38], eax
lea rsi, [rbp-0x30]
lea rdx, [rbp-0x38]
mov rdi, gword ptr [rbp-0x08]
vmovsd xmm0, qword ptr [rbp-0x18]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double,byref,byref):int:this
call [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double,byref,byref):int:this
test eax, eax
jl SHORT G_M37961_IG08
vmovsd xmm0, qword ptr [rbp-0x18]
mov rax, 0xD1FFAB1E ; code for System.Collections.ThrowHelper:ThrowDuplicateKey[double](double)
call [rax]System.Collections.ThrowHelper:ThrowDuplicateKey[double](double)
;; size=60 bbWeight=1 PerfScore 18.25
G_M37961_IG08:
mov rdi, gword ptr [rbp-0x08]
mov esi, dword ptr [rbp-0x0C]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:RemoveEntryFromBucket(int):this
call [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:RemoveEntryFromBucket(int):this
mov rax, bword ptr [rbp-0x28]
mov ecx, dword ptr [rbp-0x30]
mov dword ptr [rax+0x04], ecx
mov rax, bword ptr [rbp-0x28]
vmovsd xmm0, qword ptr [rbp-0x18]
vmovsd qword ptr [rax+0x08], xmm0
mov rax, bword ptr [rbp-0x28]
mov rcx, qword ptr [rbp-0x20]
mov qword ptr [rax+0x10], rcx
mov rdi, gword ptr [rbp-0x08]
mov rsi, bword ptr [rbp-0x28]
mov edx, dword ptr [rbp-0x0C]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:PushEntryIntoBucket(byref,int):this
call [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:PushEntryIntoBucket(byref,int):this
mov rax, gword ptr [rbp-0x08]
inc dword ptr [rax+0x3C]
mov rax, gword ptr [rbp-0x08]
mov rdx, gword ptr [rax+0x18]
mov rdi, gword ptr [rbp-0x08]
mov esi, dword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:RehashIfNecessary(uint,System.Collections.Generic.OrderedDictionary`2+Entry[double,System.Nullable`1[int]][]):this
call [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:RehashIfNecessary(uint,System.Collections.Generic.OrderedDictionary`2+Entry[double,System.Nullable`1[int]][]):this
nop
;; size=113 bbWeight=1 PerfScore 36.00
G_M37961_IG09:
add rsp, 80
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
G_M37961_IG10:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 483, prolog size 26, PerfScore 152.08, instruction count 120, allocated bytes for code 483 (MethodHash=ed356bb6) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:SetAt(int,double,System.Nullable`1[int]):this (Tier0)
+; Total bytes of code 424, prolog size 26, PerfScore 139.33, instruction count 110, allocated bytes for code 424 (MethodHash=ed356bb6) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:SetAt(int,double,System.Nullable`1[int]):this (Tier0) -59 (-46.46 % of base) - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryAdd(double,System.Nullable`1[int]):ubyte:this ; Assembly listing for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryAdd(double,System.Nullable`1[int]):ubyte:this (Tier0)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier0 code
; rbp based frame
; partially interruptible
; Final local variable assignments
;
; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] this class-hnd <System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]>
; V01 arg1 [V01 ] ( 1, 1 ) double -> [rbp-0x10] do-not-enreg[]
; V02 arg2 [V02 ] ( 1, 1 ) struct ( 8) [rbp-0x18] do-not-enreg[S] <System.Nullable`1[int]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "Reusable Box Helper"
;
; Lcl frame size = 32
G_M42298_IG01:
push rbp
sub rsp, 32
lea rbp, [rsp+0x20]
xor eax, eax
mov qword ptr [rbp-0x20], rax
mov gword ptr [rbp-0x08], rdi
vmovsd qword ptr [rbp-0x10], xmm0
mov qword ptr [rbp-0x18], rsi
;; size=29 bbWeight=1 PerfScore 6.00
G_M42298_IG02:
- mov rdi, 0xD1FFAB1E ; System.Double
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x20], rax
- mov rax, gword ptr [rbp-0x20]
- vmovsd xmm0, qword ptr [rbp-0x10]
- vmovsd qword ptr [rax+0x08], xmm0
- mov rdi, gword ptr [rbp-0x20]
- mov rsi, 0xD1FFAB1E ; 'key'
- mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov rdi, gword ptr [rbp-0x08]
mov rdx, qword ptr [rbp-0x18]
vmovsd xmm0, qword ptr [rbp-0x10]
mov esi, -1
xor ecx, ecx
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryInsert(int,double,System.Nullable`1[int],int):ubyte:this
call [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryInsert(int,double,System.Nullable`1[int],int):ubyte:this
nop
- ;; size=92 bbWeight=1 PerfScore 21.75
+ ;; size=33 bbWeight=1 PerfScore 9.00
G_M42298_IG03:
add rsp, 32
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 127, prolog size 16, PerfScore 29.50, instruction count 29, allocated bytes for code 127 (MethodHash=72125ac5) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryAdd(double,System.Nullable`1[int]):ubyte:this (Tier0)
+; Total bytes of code 68, prolog size 16, PerfScore 16.75, instruction count 19, allocated bytes for code 68 (MethodHash=72125ac5) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryAdd(double,System.Nullable`1[int]):ubyte:this (Tier0) -59 (-31.05 % of base) - System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this ; Assembly listing for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this (Tier0)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier0 code
; rbp based frame
; partially interruptible
; Final local variable assignments
;
; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] this class-hnd <System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]>
; V01 arg1 [V01 ] ( 1, 1 ) double -> [rbp-0x10] do-not-enreg[]
; V02 arg2 [V02 ] ( 1, 1 ) byref -> [rbp-0x18] do-not-enreg[]
; V03 loc0 [V03 ] ( 1, 1 ) int -> [rbp-0x1C] do-not-enreg[]
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "Reusable Box Helper"
;
; Lcl frame size = 48
G_M4178_IG01:
push rbp
sub rsp, 48
lea rbp, [rsp+0x30]
xor eax, eax
mov qword ptr [rbp-0x28], rax
mov gword ptr [rbp-0x08], rdi
vmovsd qword ptr [rbp-0x10], xmm0
mov bword ptr [rbp-0x18], rsi
;; size=29 bbWeight=1 PerfScore 6.00
G_M4178_IG02:
- mov rdi, 0xD1FFAB1E ; System.Double
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x28], rax
- mov rax, gword ptr [rbp-0x28]
- vmovsd xmm0, qword ptr [rbp-0x10]
- vmovsd qword ptr [rax+0x08], xmm0
- mov rdi, gword ptr [rbp-0x28]
- mov rsi, 0xD1FFAB1E ; 'key'
- mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov rdi, gword ptr [rbp-0x08]
vmovsd xmm0, qword ptr [rbp-0x10]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double):int:this
call [rax]System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:IndexOf(double):int:this
mov dword ptr [rbp-0x1C], eax
cmp dword ptr [rbp-0x1C], 0
jl SHORT G_M4178_IG04
mov rax, gword ptr [rbp-0x08]
mov rax, gword ptr [rax+0x18]
mov ecx, dword ptr [rbp-0x1C]
cmp ecx, dword ptr [rax+0x08]
jae SHORT G_M4178_IG06
mov edx, ecx
imul rdx, rdx, 24
lea rax, bword ptr [rax+rdx+0x10]
mov rcx, bword ptr [rbp-0x18]
mov rdx, qword ptr [rax+0x10]
mov qword ptr [rcx], rdx
mov eax, 1
- ;; size=132 bbWeight=1 PerfScore 39.50
+ ;; size=73 bbWeight=1 PerfScore 26.75
G_M4178_IG03:
add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
G_M4178_IG04:
mov rax, bword ptr [rbp-0x18]
xor ecx, ecx
mov qword ptr [rax], rcx
xor eax, eax
;; size=11 bbWeight=1 PerfScore 2.50
G_M4178_IG05:
add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
G_M4178_IG06:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 190, prolog size 16, PerfScore 51.50, instruction count 49, allocated bytes for code 190 (MethodHash=4854efad) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this (Tier0)
+; Total bytes of code 131, prolog size 16, PerfScore 38.75, instruction count 39, allocated bytes for code 131 (MethodHash=4854efad) for method System.Collections.Generic.OrderedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this (Tier0) -59 (-34.30 % of base) - System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this ; Assembly listing for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier0 code
; rbp based frame
; partially interruptible
; Final local variable assignments
;
; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] this class-hnd <System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]>
; V01 arg1 [V01 ] ( 1, 1 ) double -> [rbp-0x10] do-not-enreg[]
; V02 arg2 [V02 ] ( 1, 1 ) struct ( 8) [rbp-0x18] do-not-enreg[S] <System.Nullable`1[int]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "Reusable Box Helper"
; V05 tmp2 [V05 ] ( 1, 1 ) struct (16) [rbp-0x30] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]>
; V06 tmp3 [V06 ] ( 1, 1 ) ref -> [rbp-0x38] do-not-enreg[] must-init class-hnd exact "impAppendStmt" <System.Collections.Generic.TreeSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]>
;
; Lcl frame size = 64
G_M62164_IG01:
push rbp
sub rsp, 64
lea rbp, [rsp+0x40]
xor eax, eax
mov qword ptr [rbp-0x20], rax
mov qword ptr [rbp-0x38], rax
mov gword ptr [rbp-0x08], rdi
vmovsd qword ptr [rbp-0x10], xmm0
mov qword ptr [rbp-0x18], rsi
;; size=33 bbWeight=1 PerfScore 7.00
G_M62164_IG02:
- mov rdi, 0xD1FFAB1E ; System.Double
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x20], rax
- mov rax, gword ptr [rbp-0x20]
- vmovsd xmm0, qword ptr [rbp-0x10]
- vmovsd qword ptr [rax+0x08], xmm0
- mov rdi, gword ptr [rbp-0x20]
- mov rsi, 0xD1FFAB1E ; 'key'
- mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
vxorps xmm0, xmm0, xmm0
vmovups xmmword ptr [rbp-0x30], xmm0
mov rax, gword ptr [rbp-0x08]
mov rax, gword ptr [rax+0x18]
mov gword ptr [rbp-0x38], rax
lea rdi, [rbp-0x30]
vmovsd xmm0, qword ptr [rbp-0x10]
mov rsi, qword ptr [rbp-0x18]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:.ctor(double,System.Nullable`1[int]):this
call [rax]System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:.ctor(double,System.Nullable`1[int]):this
vmovsd xmm0, qword ptr [rbp-0x30]
mov rsi, qword ptr [rbp-0x28]
mov rdi, gword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.SortedSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:Add(System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]):ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.Collections.Generic.SortedSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:Add(System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]):ubyte:this
nop
- ;; size=133 bbWeight=1 PerfScore 37.33
+ ;; size=74 bbWeight=1 PerfScore 24.58
G_M62164_IG03:
add rsp, 64
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 172, prolog size 20, PerfScore 46.08, instruction count 39, allocated bytes for code 172 (MethodHash=82300d2b) for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
+; Total bytes of code 113, prolog size 20, PerfScore 33.33, instruction count 29, allocated bytes for code 113 (MethodHash=82300d2b) for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0) -59 (-33.91 % of base) - System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:ContainsKey(double):ubyte:this ; Assembly listing for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:ContainsKey(double):ubyte:this (Tier0)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier0 code
; rbp based frame
; partially interruptible
; Final local variable assignments
;
; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] this class-hnd <System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]>
; V01 arg1 [V01 ] ( 1, 1 ) double -> [rbp-0x10] do-not-enreg[]
; V02 loc0 [V02 ] ( 1, 1 ) struct ( 8) [rbp-0x18] do-not-enreg[S] ld-addr-op <System.Nullable`1[int]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "Reusable Box Helper"
; V05 tmp2 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init class-hnd exact "impAppendStmt" <System.Collections.Generic.TreeSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]>
; V06 tmp3 [V06 ] ( 1, 1 ) struct (16) [rbp-0x38] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]>
;
; Lcl frame size = 64
G_M13622_IG01:
push rbp
sub rsp, 64
lea rbp, [rsp+0x40]
xor eax, eax
mov qword ptr [rbp-0x20], rax
mov qword ptr [rbp-0x28], rax
mov gword ptr [rbp-0x08], rdi
vmovsd qword ptr [rbp-0x10], xmm0
;; size=29 bbWeight=1 PerfScore 6.00
G_M13622_IG02:
- mov rdi, 0xD1FFAB1E ; System.Double
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x20], rax
- mov rax, gword ptr [rbp-0x20]
- vmovsd xmm0, qword ptr [rbp-0x10]
- vmovsd qword ptr [rax+0x08], xmm0
- mov rdi, gword ptr [rbp-0x20]
- mov rsi, 0xD1FFAB1E ; 'key'
- mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov rax, gword ptr [rbp-0x08]
mov rax, gword ptr [rax+0x18]
mov gword ptr [rbp-0x28], rax
xor eax, eax
mov qword ptr [rbp-0x18], rax
vxorps xmm0, xmm0, xmm0
vmovups xmmword ptr [rbp-0x38], xmm0
lea rdi, [rbp-0x38]
vmovsd xmm0, qword ptr [rbp-0x10]
mov rsi, qword ptr [rbp-0x18]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:.ctor(double,System.Nullable`1[int]):this
call [rax]System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:.ctor(double,System.Nullable`1[int]):this
vmovsd xmm0, qword ptr [rbp-0x38]
mov rsi, qword ptr [rbp-0x30]
mov rdi, gword ptr [rbp-0x28]
mov rax, gword ptr [rbp-0x28]
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x50]
call [rax+0x18]System.Collections.Generic.SortedSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:Contains(System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]):ubyte:this
nop
- ;; size=139 bbWeight=1 PerfScore 40.33
+ ;; size=80 bbWeight=1 PerfScore 27.58
G_M13622_IG03:
add rsp, 64
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 174, prolog size 20, PerfScore 48.08, instruction count 41, allocated bytes for code 174 (MethodHash=c2bacac9) for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:ContainsKey(double):ubyte:this (Tier0)
+; Total bytes of code 115, prolog size 20, PerfScore 35.33, instruction count 31, allocated bytes for code 115 (MethodHash=c2bacac9) for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:ContainsKey(double):ubyte:this (Tier0) -59 (-33.91 % of base) - System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Remove(double):ubyte:this ; Assembly listing for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Remove(double):ubyte:this (Tier0)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier0 code
; rbp based frame
; partially interruptible
; Final local variable assignments
;
; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] this class-hnd <System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]>
; V01 arg1 [V01 ] ( 1, 1 ) double -> [rbp-0x10] do-not-enreg[]
; V02 loc0 [V02 ] ( 1, 1 ) struct ( 8) [rbp-0x18] do-not-enreg[S] ld-addr-op <System.Nullable`1[int]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "Reusable Box Helper"
; V05 tmp2 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init class-hnd exact "impAppendStmt" <System.Collections.Generic.TreeSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]>
; V06 tmp3 [V06 ] ( 1, 1 ) struct (16) [rbp-0x38] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]>
;
; Lcl frame size = 64
G_M55812_IG01:
push rbp
sub rsp, 64
lea rbp, [rsp+0x40]
xor eax, eax
mov qword ptr [rbp-0x20], rax
mov qword ptr [rbp-0x28], rax
mov gword ptr [rbp-0x08], rdi
vmovsd qword ptr [rbp-0x10], xmm0
;; size=29 bbWeight=1 PerfScore 6.00
G_M55812_IG02:
- mov rdi, 0xD1FFAB1E ; System.Double
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x20], rax
- mov rax, gword ptr [rbp-0x20]
- vmovsd xmm0, qword ptr [rbp-0x10]
- vmovsd qword ptr [rax+0x08], xmm0
- mov rdi, gword ptr [rbp-0x20]
- mov rsi, 0xD1FFAB1E ; 'key'
- mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov rax, gword ptr [rbp-0x08]
mov rax, gword ptr [rax+0x18]
mov gword ptr [rbp-0x28], rax
xor eax, eax
mov qword ptr [rbp-0x18], rax
vxorps xmm0, xmm0, xmm0
vmovups xmmword ptr [rbp-0x38], xmm0
lea rdi, [rbp-0x38]
vmovsd xmm0, qword ptr [rbp-0x10]
mov rsi, qword ptr [rbp-0x18]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:.ctor(double,System.Nullable`1[int]):this
call [rax]System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:.ctor(double,System.Nullable`1[int]):this
vmovsd xmm0, qword ptr [rbp-0x38]
mov rsi, qword ptr [rbp-0x30]
mov rdi, gword ptr [rbp-0x28]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.SortedSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:Remove(System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]):ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.Collections.Generic.SortedSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:Remove(System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]):ubyte:this
nop
- ;; size=139 bbWeight=1 PerfScore 38.58
+ ;; size=80 bbWeight=1 PerfScore 25.83
G_M55812_IG03:
add rsp, 64
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 174, prolog size 20, PerfScore 46.33, instruction count 40, allocated bytes for code 174 (MethodHash=9f4c25fb) for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Remove(double):ubyte:this (Tier0)
+; Total bytes of code 115, prolog size 20, PerfScore 33.58, instruction count 30, allocated bytes for code 115 (MethodHash=9f4c25fb) for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:Remove(double):ubyte:this (Tier0) -59 (-21.15 % of base) - System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this ; Assembly listing for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this (Tier0)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier0 code
; rbp based frame
; partially interruptible
; Final local variable assignments
;
; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] this class-hnd <System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]>
; V01 arg1 [V01 ] ( 1, 1 ) double -> [rbp-0x10] do-not-enreg[]
; V02 arg2 [V02 ] ( 1, 1 ) byref -> [rbp-0x18] do-not-enreg[]
; V03 loc0 [V03 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init class-hnd exact <System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]>
; V04 loc1 [V04 ] ( 1, 1 ) struct ( 8) [rbp-0x28] do-not-enreg[S] ld-addr-op <System.Nullable`1[int]>
; V05 loc2 [V05 ] ( 1, 1 ) struct (16) [rbp-0x38] do-not-enreg[XS] addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07 ] ( 1, 1 ) ref -> [rbp-0x40] do-not-enreg[] must-init "Reusable Box Helper"
; V08 tmp2 [V08 ] ( 1, 1 ) ref -> [rbp-0x48] do-not-enreg[] must-init class-hnd exact "impAppendStmt" <System.Collections.Generic.TreeSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]>
; V09 tmp3 [V09 ] ( 1, 1 ) struct (16) [rbp-0x58] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]>
; V10 tmp4 [V10 ] ( 1, 1 ) struct (16) [rbp-0x68] do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]>
;
; Lcl frame size = 112
G_M26086_IG01:
push rbp
sub rsp, 112
lea rbp, [rsp+0x70]
xor eax, eax
mov qword ptr [rbp-0x48], rax
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x40], ymm8
mov qword ptr [rbp-0x20], rax
mov gword ptr [rbp-0x08], rdi
vmovsd qword ptr [rbp-0x10], xmm0
mov bword ptr [rbp-0x18], rsi
;; size=43 bbWeight=1 PerfScore 9.33
G_M26086_IG02:
- mov rdi, 0xD1FFAB1E ; System.Double
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x40], rax
- mov rax, gword ptr [rbp-0x40]
- vmovsd xmm0, qword ptr [rbp-0x10]
- vmovsd qword ptr [rax+0x08], xmm0
- mov rdi, gword ptr [rbp-0x40]
- mov rsi, 0xD1FFAB1E ; 'key'
- mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov rax, gword ptr [rbp-0x08]
mov rax, gword ptr [rax+0x18]
mov gword ptr [rbp-0x48], rax
xor eax, eax
mov qword ptr [rbp-0x28], rax
vxorps xmm0, xmm0, xmm0
vmovups xmmword ptr [rbp-0x58], xmm0
lea rdi, [rbp-0x58]
vmovsd xmm0, qword ptr [rbp-0x10]
mov rsi, qword ptr [rbp-0x28]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:.ctor(double,System.Nullable`1[int]):this
call [rax]System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:.ctor(double,System.Nullable`1[int]):this
vmovsd xmm0, qword ptr [rbp-0x58]
mov rsi, qword ptr [rbp-0x50]
mov rdi, gword ptr [rbp-0x48]
mov rax, gword ptr [rbp-0x48]
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x58]
call [rax]System.Collections.Generic.SortedSet`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:FindNode(System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]):System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:this
mov gword ptr [rbp-0x20], rax
cmp gword ptr [rbp-0x20], 0
jne SHORT G_M26086_IG04
mov rax, bword ptr [rbp-0x18]
xor ecx, ecx
mov qword ptr [rax], rcx
xor eax, eax
- ;; size=159 bbWeight=1 PerfScore 46.58
+ ;; size=100 bbWeight=1 PerfScore 33.83
G_M26086_IG03:
add rsp, 112
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
G_M26086_IG04:
mov rdi, gword ptr [rbp-0x20]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:get_Item():System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:this
cmp dword ptr [rdi], edi
call [rax]System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:get_Item():System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:this
vmovsd qword ptr [rbp-0x68], xmm0
mov qword ptr [rbp-0x60], rax
vmovups xmm0, xmmword ptr [rbp-0x68]
vmovups xmmword ptr [rbp-0x38], xmm0
lea rdi, [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:get_Value():System.Nullable`1[int]:this
call [rax]System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]:get_Value():System.Nullable`1[int]:this
mov rcx, bword ptr [rbp-0x18]
mov qword ptr [rcx], rax
mov eax, 1
;; size=65 bbWeight=1 PerfScore 19.25
G_M26086_IG05:
add rsp, 112
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 279, prolog size 30, PerfScore 78.67, instruction count 67, allocated bytes for code 279 (MethodHash=fbd89a19) for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this (Tier0)
+; Total bytes of code 220, prolog size 30, PerfScore 65.92, instruction count 57, allocated bytes for code 220 (MethodHash=fbd89a19) for method System.Collections.Generic.SortedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this (Tier0) -59 (-17.25 % of base) - System.Collections.Generic.SortedList`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this ; Assembly listing for method System.Collections.Generic.SortedList`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier0 code
; rbp based frame
; partially interruptible
; Final local variable assignments
;
; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] this class-hnd <System.Collections.Generic.SortedList`2[double,System.Nullable`1[int]]>
; V01 arg1 [V01 ] ( 1, 1 ) double -> [rbp-0x10] do-not-enreg[]
; V02 arg2 [V02 ] ( 1, 1 ) struct ( 8) [rbp-0x18] do-not-enreg[S] <System.Nullable`1[int]>
; V03 loc0 [V03 ] ( 1, 1 ) int -> [rbp-0x1C] do-not-enreg[]
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "Reusable Box Helper"
; V06 tmp2 [V06 ] ( 1, 1 ) ref -> [rbp-0x30] do-not-enreg[] must-init class-hnd exact "impImportAndPushBox" <System.String>
; V07 tmp3 [V07 ] ( 1, 1 ) ref -> [rbp-0x38] do-not-enreg[] must-init class-hnd exact "NewObj constructor temp" <System.ArgumentException>
; V08 tmp4 [V08 ] ( 1, 1 ) ref -> [rbp-0x40] do-not-enreg[] must-init "argument with side effect"
; V09 tmp5 [V09 ] ( 1, 1 ) ref -> [rbp-0x48] do-not-enreg[] must-init "argument with side effect"
;
; Lcl frame size = 80
G_M22574_IG01:
push rbp
sub rsp, 80
lea rbp, [rsp+0x50]
xor eax, eax
mov qword ptr [rbp-0x48], rax
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x40], ymm8
mov gword ptr [rbp-0x08], rdi
vmovsd qword ptr [rbp-0x10], xmm0
mov qword ptr [rbp-0x18], rsi
;; size=39 bbWeight=1 PerfScore 8.33
G_M22574_IG02:
- mov rdi, 0xD1FFAB1E ; System.Double
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x28], rax
- mov rax, gword ptr [rbp-0x28]
- vmovsd xmm0, qword ptr [rbp-0x10]
- vmovsd qword ptr [rax+0x08], xmm0
- mov rdi, gword ptr [rbp-0x28]
- mov rsi, 0xD1FFAB1E ; 'key'
- mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
- call [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
mov rax, gword ptr [rbp-0x08]
mov rdi, gword ptr [rax+0x08]
mov rax, gword ptr [rbp-0x08]
mov rcx, gword ptr [rax+0x18]
mov rax, gword ptr [rbp-0x08]
mov edx, dword ptr [rax+0x30]
vmovsd xmm0, qword ptr [rbp-0x10]
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Array:BinarySearch[double](double[],int,int,double,System.Collections.Generic.IComparer`1[double]):int
call [rax]System.Array:BinarySearch[double](double[],int,int,double,System.Collections.Generic.IComparer`1[double]):int
mov dword ptr [rbp-0x1C], eax
cmp dword ptr [rbp-0x1C], 0
jl G_M22574_IG04
- ;; size=114 bbWeight=1 PerfScore 32.25
+ ;; size=55 bbWeight=1 PerfScore 19.50
G_M22574_IG03:
mov rdi, 0xD1FFAB1E ; System.Double
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x28], rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_AddingDuplicate():System.String
call [rax]System.SR:get_Argument_AddingDuplicate():System.String
mov gword ptr [rbp-0x30], rax
mov rax, gword ptr [rbp-0x28]
vmovsd xmm0, qword ptr [rbp-0x10]
vmovsd qword ptr [rax+0x08], xmm0
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x38], rax
mov rsi, gword ptr [rbp-0x28]
mov rdi, gword ptr [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object):System.String
call [rax]System.SR:Format(System.String,System.Object):System.String
mov gword ptr [rbp-0x40], rax
mov edi, 0x869
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov gword ptr [rbp-0x48], rax
mov rsi, gword ptr [rbp-0x40]
mov rdx, gword ptr [rbp-0x48]
mov rdi, gword ptr [rbp-0x38]
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, gword ptr [rbp-0x38]
call CORINFO_HELP_THROW
int3
;; size=150 bbWeight=0 PerfScore 0.00
G_M22574_IG04:
mov eax, dword ptr [rbp-0x1C]
mov esi, eax
not esi
mov rdi, gword ptr [rbp-0x08]
vmovsd xmm0, qword ptr [rbp-0x10]
mov rdx, qword ptr [rbp-0x18]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.SortedList`2[double,System.Nullable`1[int]]:Insert(int,double,System.Nullable`1[int]):this
call [rax]System.Collections.Generic.SortedList`2[double,System.Nullable`1[int]]:Insert(int,double,System.Nullable`1[int]):this
nop
;; size=33 bbWeight=1 PerfScore 10.00
G_M22574_IG05:
add rsp, 80
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 342, prolog size 26, PerfScore 52.33, instruction count 74, allocated bytes for code 342 (MethodHash=8f1ea7d1) for method System.Collections.Generic.SortedList`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0)
+; Total bytes of code 283, prolog size 26, PerfScore 39.58, instruction count 64, allocated bytes for code 283 (MethodHash=8f1ea7d1) for method System.Collections.Generic.SortedList`2[double,System.Nullable`1[int]]:Add(double,System.Nullable`1[int]):this (Tier0) Larger list of diffs: https://gist.github.com/MihuBot/925d0f922d43f4c51e1f36b33d0bdfb5 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 15 minutes.
dotnet/runtime#104815
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: