Untitled diff

创建于 差异永不过期
96 删除
209 行
137 添加
250 行
; Assembly listing for method System.TimeZoneInfo:ParseTimeZoneIds(System.IO.StreamReader):System.Collections.Generic.List`1[System.String] (FullOpts)
; Assembly listing for method System.TimeZoneInfo:ParseTimeZoneIds(System.IO.StreamReader):System.Collections.Generic.List`1[System.String] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; FullOpts code
; optimized code
; optimized code
; rbp based frame
; rbp based frame
; partially interruptible
; partially interruptible
; No PGO data
; No PGO data
; 0 inlinees with PGO data; 20 single block inlinees; 8 inlinees without PGO data
; 0 inlinees with PGO data; 22 single block inlinees; 10 inlinees without PGO data
; Final local variable assignments
; Final local variable assignments
;
;
; V00 arg0 [V00,T06] ( 5, 8 ) ref -> rbx class-hnd single-def <System.IO.StreamReader>
; V00 arg0 [V00,T08] ( 5, 8 ) ref -> rbx class-hnd single-def <System.IO.StreamReader>
; V01 loc0 [V01,T03] ( 8, 14 ) ref -> r15 class-hnd exact single-def <System.Collections.Generic.List`1[System.String]>
; V01 loc0 [V01,T05] ( 8, 14 ) ref -> r15 class-hnd exact single-def <System.Collections.Generic.List`1[System.String]>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
;* V03 loc2 [V03 ] ( 0, 0 ) int -> zero-ref
;* V03 loc2 [V03 ] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) int -> zero-ref
; V05 loc4 [V05,T05] ( 6, 12 ) ref -> rax class-hnd <System.String>
; V05 loc4 [V05,T07] ( 6, 12 ) ref -> rax class-hnd <System.String>
; V06 loc5 [V06,T02] ( 8, 16 ) int -> [rbp-0x2C] spill-single-def
; V06 loc5 [V06,T02] ( 10, 18.50) int -> [rbp-0x2C] spill-single-def
;* V07 loc6 [V07 ] ( 0, 0 ) int -> zero-ref
;* V07 loc6 [V07 ] ( 0, 0 ) int -> zero-ref
;* V08 loc7 [V08 ] ( 0, 0 ) int -> zero-ref
; V08 loc7 [V08,T06] ( 7, 12.50) int -> rdx
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
; V10 tmp1 [V10,T19] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.String]>
; V10 tmp1 [V10,T22] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.String]>
; V11 tmp2 [V11,T00] ( 10, 48 ) ref -> r13 class-hnd exact "dup spill" <System.String>
; V11 tmp2 [V11,T00] ( 11, 49 ) ref -> r13 class-hnd exact "dup spill" <System.String>
;* V12 tmp3 [V12,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V12 tmp3 [V12,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V13 tmp4 [V13,T13] ( 2, 8 ) byref -> rdi "Inlining Arg"
; V13 tmp4 [V13,T16] ( 2, 8 ) byref -> rdi "Inlining Arg"
; V14 tmp5 [V14,T16] ( 2, 8 ) int -> rdx "Inlining Arg"
; V14 tmp5 [V14,T19] ( 2, 8 ) int -> rdx "Inlining Arg"
; V15 tmp6 [V15,T21] ( 3, 6 ) int -> rax "Inline return value spill temp"
; V15 tmp6 [V15,T24] ( 3, 6 ) int -> rax "Inline return value spill temp"
; V16 tmp7 [V16,T01] ( 5, 20 ) int -> [rbp-0x30] spill-single-def "Inlining Arg"
; V16 tmp7 [V16,T01] ( 5, 20 ) int -> [rbp-0x30] spill-single-def "Inlining Arg"
; V17 tmp8 [V17,T08] ( 4, 8 ) int -> rax "Inline return value spill temp"
; V17 tmp8 [V17,T11] ( 4, 8 ) int -> rax "Inline return value spill temp"
; V18 tmp9 [V18,T17] ( 2, 8 ) int -> rdx "Inlining Arg"
; V18 tmp9 [V18,T20] ( 2, 8 ) int -> rdx "Inlining Arg"
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V20 tmp11 [V20,T14] ( 2, 8 ) byref -> rdi "Inlining Arg"
; V20 tmp11 [V20,T17] ( 2, 8 ) byref -> rdi "Inlining Arg"
; V21 tmp12 [V21,T09] ( 4, 8 ) int -> rax "Inline return value spill temp"
; V21 tmp12 [V21,T12] ( 4, 8 ) int -> rax "Inline return value spill temp"
; V22 tmp13 [V22,T10] ( 4, 8 ) int -> rdx "Inline return value spill temp"
; V22 tmp13 [V22,T13] ( 4, 8 ) int -> rax "Inline return value spill temp"
; V23 tmp14 [V23,T18] ( 2, 8 ) int -> rdx "Inlining Arg"
; V23 tmp14 [V23,T21] ( 2, 8 ) int -> rdx "Inlining Arg"
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V25 tmp16 [V25,T15] ( 2, 8 ) byref -> rdi "Inlining Arg"
; V25 tmp16 [V25,T18] ( 2, 8 ) byref -> rdi "Inlining Arg"
; V26 tmp17 [V26,T11] ( 4, 8 ) int -> rax "Inline return value spill temp"
; V26 tmp17 [V26,T14] ( 4, 8 ) int -> rax "Inline return value spill temp"
;* V27 tmp18 [V27,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V27 tmp18 [V27,T10] ( 4, 8 ) ref -> rax class-hnd exact "Inline return value spill temp" <System.String>
; V28 tmp19 [V28,T20] ( 3, 6 ) ref -> r13 class-hnd "Inline stloc first use temp" <System.String[]>
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V29 tmp20 [V29,T12] ( 4, 8 ) int -> r12 "Inline stloc first use temp"
; V29 tmp20 [V29,T26] ( 2, 4 ) long -> r13 "Inline stloc first use temp"
; V30 cse0 [V30,T22] ( 3, 6 ) long -> r14 "CSE #05: moderate"
; V30 tmp21 [V30,T04] ( 4, 16 ) ref -> r12 class-hnd exact "dup spill" <System.String>
; V31 cse1 [V31,T04] ( 7, 14 ) int -> r12 "CSE #01: aggressive"
;* V31 tmp22 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V32 cse2 [V32,T07] ( 4, 8 ) byref -> [rbp-0x38] spill-single-def "CSE #02: moderate"
;* V32 tmp23 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V33 cse3 [V33,T23] ( 2, 4 ) int -> rdi "CSE #03: moderate"
;* V33 tmp24 [V33,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V34 tmp25 [V34,T23] ( 3, 6 ) ref -> r13 class-hnd "Inline stloc first use temp" <System.String[]>
; V35 tmp26 [V35,T15] ( 4, 8 ) int -> r12 "Inline stloc first use temp"
; V36 cse0 [V36,T25] ( 3, 6 ) long -> r14 "CSE #07: moderate"
; V37 cse1 [V37,T03] ( 9, 18 ) int -> r12 "CSE #01: aggressive"
; V38 cse2 [V38,T09] ( 5, 10 ) byref -> [rbp-0x38] spill-single-def "CSE #02: moderate"
; V39 cse3 [V39,T27] ( 2, 4 ) int -> rdi "CSE #05: moderate"
;
;
; Lcl frame size = 24
; Lcl frame size = 24


G_M60059_IG01:
G_M60059_IG01:
push rbp
push rbp
push r15
push r15
push r14
push r14
push r13
push r13
push r12
push r12
push rbx
push rbx
sub rsp, 24
sub rsp, 24
lea rbp, [rsp+0x40]
lea rbp, [rsp+0x40]
mov rbx, rdi
mov rbx, rdi
;; size=22 bbWeight=1 PerfScore 7.00
;; size=22 bbWeight=1 PerfScore 7.00
G_M60059_IG02:
G_M60059_IG02:
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.String]
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.String]
call CORINFO_HELP_NEWSFAST
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov r15, rax
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rdi]
mov rsi, gword ptr [rdi]
lea rdi, bword ptr [r15+0x08]
lea rdi, bword ptr [r15+0x08]
call CORINFO_HELP_ASSIGN_REF
call CORINFO_HELP_ASSIGN_REF
mov rdi, rbx
mov rdi, rbx
mov rax, qword ptr [rbx]
mov rax, qword ptr [rbx]
mov r14, qword ptr [rax+0x48]
mov r14, qword ptr [rax+0x48]
call [r14+0x38]System.IO.TextReader:ReadLine():System.String:this
call [r14+0x38]System.IO.TextReader:ReadLine():System.String:this
mov r13, rax
mov r13, rax
test r13, r13
test r13, r13
je G_M60059_IG13
je G_M60059_IG15
;; size=66 bbWeight=1 PerfScore 14.00
;; size=66 bbWeight=1 PerfScore 14.00
G_M60059_IG03:
G_M60059_IG03:
test r13, r13
test r13, r13
je G_M60059_IG12
je G_M60059_IG14
;; size=9 bbWeight=4 PerfScore 5.00
;; size=9 bbWeight=4 PerfScore 5.00
G_M60059_IG04:
G_M60059_IG04:
mov r12d, dword ptr [r13+0x08]
mov r12d, dword ptr [r13+0x08]
test r12d, r12d
test r12d, r12d
je G_M60059_IG12
je G_M60059_IG14
cmp word ptr [r13+0x0C], 35
cmp word ptr [r13+0x0C], 35
je G_M60059_IG12
je G_M60059_IG14
lea rax, bword ptr [r13+0x0C]
lea rax, bword ptr [r13+0x0C]
mov bword ptr [rbp-0x38], rax
mov bword ptr [rbp-0x38], rax
mov rdi, rax
mov rdi, rax
mov edx, r12d
mov edx, r12d
mov esi, 9
mov esi, 9
mov rcx, 0xD1FFAB1E ; code for System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
mov rcx, 0xD1FFAB1E ; code for System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
call [rcx]System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
call [rcx]System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
test eax, eax
test eax, eax
jl G_M60059_IG12
jl G_M60059_IG14
inc eax
inc eax
mov dword ptr [rbp-0x30], eax
mov dword ptr [rbp-0x30], eax
mov edx, r12d
mov edx, r12d
sub edx, eax
sub edx, eax
cmp r12d, eax
cmp r12d, eax
jb G_M60059_IG15
jb G_M60059_IG18
movsxd rdi, eax
movsxd rdi, eax
mov rcx, bword ptr [rbp-0x38]
mov rcx, bword ptr [rbp-0x38]
lea rdi, bword ptr [rcx+2*rdi]
lea rdi, bword ptr [rcx+2*rdi]
mov esi, 9
mov esi, 9
mov r8, 0xD1FFAB1E ; code for System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
mov r8, 0xD1FFAB1E ; code for System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
call [r8]System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
call [r8]System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
test eax, eax
test eax, eax
jge SHORT G_M60059_IG05
jge SHORT G_M60059_IG05
jmp SHORT G_M60059_IG06
jmp SHORT G_M60059_IG06
;; size=118 bbWeight=2 PerfScore 51.00
;; size=118 bbWeight=2 PerfScore 51.00
G_M60059_IG05:
G_M60059_IG05:
mov edi, dword ptr [rbp-0x30]
mov edi, dword ptr [rbp-0x30]
add eax, edi
add eax, edi
;; size=5 bbWeight=2 PerfScore 2.50
;; size=5 bbWeight=2 PerfScore 2.50
G_M60059_IG06:
G_M60059_IG06:
test eax, eax
test eax, eax
jl G_M60059_IG12
jl G_M60059_IG14
inc eax
inc eax
mov dword ptr [rbp-0x2C], eax
mov dword ptr [rbp-0x2C], eax
mov edx, r12d
mov edx, r12d