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] [hez2010] JIT: Devirtualization and inlining for GVM #997
Comments
Top method regressions110 (47.62 % of base) - System.Net.NameResolutionMetrics:AfterResolution(System.TimeSpan,System.String,System.Exception) ; Assembly listing for method System.Net.NameResolutionMetrics:AfterResolution(System.TimeSpan,System.String,System.Exception) (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 16 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.TimeSpan>
; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.String>
; V02 arg2 [V02,T00] ( 4, 3.50) ref -> rdx class-hnd single-def <System.Exception>
;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
-; V04 loc1 [V04,T06] ( 2, 1 ) ref -> rax class-hnd exact single-def <System.String>
+; V04 loc1 [V04,T06] ( 2, 1 ) ref -> r14 class-hnd exact single-def <System.String>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
-;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
-; V08 tmp2 [V08,T04] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Diagnostics.Metrics.Histogram`1[double]>
-; V09 tmp3 [V09,T14] ( 2, 2 ) double -> mm0 "Inlining Arg"
-; V10 tmp4 [V10 ] ( 3, 1.50) struct (16) [rbp-0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
-;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
-;* V12 tmp6 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
-; V13 tmp7 [V13,T05] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Diagnostics.Metrics.Histogram`1[double]>
+; V07 tmp1 [V07,T03] ( 3, 3 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <System.Diagnostics.Metrics.Histogram`1[double]>
+; V08 tmp2 [V08,T04] ( 3, 3 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <System.Diagnostics.Metrics.Histogram`1[double]>
+;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
+; V10 tmp4 [V10,T14] ( 2, 2 ) double -> mm0 "Inlining Arg"
+; V11 tmp5 [V11 ] ( 3, 1.50) struct (16) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
+;* V12 tmp6 [V12 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
+;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
; V14 tmp8 [V14,T15] ( 2, 2 ) double -> mm0 "Inlining Arg"
-; V15 tmp9 [V15 ] ( 6, 3 ) struct (32) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <<>y__InlineArray2`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
+; V15 tmp9 [V15 ] ( 6, 3 ) struct (32) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <<>y__InlineArray2`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
; V18 tmp12 [V18,T02] ( 3, 2 ) long -> rbx single-def "field V00._ticks (fldOffset=0x0)" P-INDEP
;* V19 tmp13 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "field V03.key (fldOffset=0x0)" P-INDEP
;* V20 tmp14 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V03.value (fldOffset=0x8)" P-INDEP
;* V21 tmp15 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "field V05.key (fldOffset=0x0)" P-INDEP
;* V22 tmp16 [V22 ] ( 0, 0 ) ref -> zero-ref single-def "field V05.value (fldOffset=0x8)" P-INDEP
-;* V23 tmp17 [V23,T08] ( 0, 0 ) ref -> zero-ref single-def "field V07.key (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T03] ( 3, 2 ) ref -> r15 single-def "field V07.value (fldOffset=0x8)" P-INDEP
-; V25 tmp19 [V25 ] ( 2, 1 ) ref -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V10.key (fldOffset=0x0)" P-DEP
-; V26 tmp20 [V26 ] ( 2, 1 ) ref -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V10.value (fldOffset=0x8)" P-DEP
-;* V27 tmp21 [V27,T09] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V28 tmp22 [V28,T12] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-;* V29 tmp23 [V29,T10] ( 0, 0 ) ref -> zero-ref single-def "field V12.key (fldOffset=0x0)" P-INDEP
-; V30 tmp24 [V30,T07] ( 2, 1 ) ref -> rax single-def "field V12.value (fldOffset=0x8)" P-INDEP
+;* V23 tmp17 [V23,T08] ( 0, 0 ) ref -> zero-ref single-def "field V09.key (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T05] ( 3, 2 ) ref -> r15 single-def "field V09.value (fldOffset=0x8)" P-INDEP
+; V25 tmp19 [V25 ] ( 2, 1 ) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V11.key (fldOffset=0x0)" P-DEP
+; V26 tmp20 [V26 ] ( 2, 1 ) ref -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V11.value (fldOffset=0x8)" P-DEP
+;* V27 tmp21 [V27,T09] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+;* V28 tmp22 [V28,T12] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
+;* V29 tmp23 [V29,T10] ( 0, 0 ) ref -> zero-ref single-def "field V13.key (fldOffset=0x0)" P-INDEP
+; V30 tmp24 [V30,T07] ( 2, 1 ) ref -> r14 single-def "field V13.value (fldOffset=0x8)" P-INDEP
;* V31 tmp25 [V31 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V32 tmp26 [V32 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
;* V33 tmp27 [V33,T11] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp28 [V34,T13] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M12031_IG01:
push rbp
push r15
+ push r14
push rbx
- sub rsp, 48
- lea rbp, [rsp+0x40]
+ sub rsp, 56
+ lea rbp, [rsp+0x50]
+ xor eax, eax
+ mov qword ptr [rbp-0x48], rax
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x40], ymm8
- vmovdqa xmmword ptr [rbp-0x20], xmm8
+ mov qword ptr [rbp-0x20], rax
mov rbx, rdi
- ;; size=31 bbWeight=1 PerfScore 8.33
+ ;; size=38 bbWeight=1 PerfScore 9.58
G_M12031_IG02:
mov r15, rsi
test rdx, rdx
- je SHORT G_M12031_IG04
- ;; size=8 bbWeight=1 PerfScore 1.50
+ je G_M12031_IG05
+ ;; size=12 bbWeight=1 PerfScore 1.50
G_M12031_IG03:
mov rdi, rdx
mov rax, 0xD1FFAB1E ; code for System.Net.NameResolutionTelemetry:GetErrorType(System.Exception):System.String
call [rax]System.Net.NameResolutionTelemetry:GetErrorType(System.Exception):System.String
- mov rsi, 0xD1FFAB1E ; const ptr
+ mov r14, rax
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M12031_IG09
+ ;; size=37 bbWeight=0.50 PerfScore 4.00
+G_M12031_IG04:
+ mov rsi, 0xD1FFAB1E ; data for System.Net.NameResolutionMetrics:s_lookupDuration
mov rdi, gword ptr [rsi]
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rbx
vdivsd xmm0, xmm0, qword ptr [reloc @RWD00]
+ cmp byte ptr [rdi], dil
vxorps ymm1, ymm1, ymm1
- vmovdqu ymmword ptr [rbp-0x40], ymm1
+ vmovdqu ymmword ptr [rbp-0x48], ymm1
mov rsi, 0xD1FFAB1E ; 'dns.question.name'
- mov gword ptr [rbp-0x40], rsi
- mov gword ptr [rbp-0x38], r15
+ mov gword ptr [rbp-0x48], rsi
+ mov gword ptr [rbp-0x40], r15
mov rsi, 0xD1FFAB1E ; 'error.type'
- mov gword ptr [rbp-0x30], rsi
- mov gword ptr [rbp-0x28], rax
- lea rsi, bword ptr [rbp-0x40]
+ mov gword ptr [rbp-0x38], rsi
+ mov gword ptr [rbp-0x30], r14
+ lea rsi, bword ptr [rbp-0x48]
mov edx, 2
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Metrics.Instrument`1[double]:RecordMeasurement(double,System.ReadOnlySpan`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):this
call [rax]System.Diagnostics.Metrics.Instrument`1[double]:RecordMeasurement(double,System.ReadOnlySpan`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):this
- jmp SHORT G_M12031_IG05
- ;; size=113 bbWeight=0.50 PerfScore 18.96
-G_M12031_IG04:
- mov rsi, 0xD1FFAB1E ; const ptr
+ jmp SHORT G_M12031_IG07
+ ;; size=101 bbWeight=0.50 PerfScore 18.71
+G_M12031_IG05:
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je SHORT G_M12031_IG10
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M12031_IG06:
+ mov rsi, 0xD1FFAB1E ; data for System.Net.NameResolutionMetrics:s_lookupDuration
mov rdi, gword ptr [rsi]
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rbx
vdivsd xmm0, xmm0, qword ptr [reloc @RWD00]
+ cmp byte ptr [rdi], dil
mov rsi, 0xD1FFAB1E ; 'dns.question.name'
- mov gword ptr [rbp-0x20], rsi
- mov gword ptr [rbp-0x18], r15
- lea rsi, bword ptr [rbp-0x20]
+ mov gword ptr [rbp-0x28], rsi
+ mov gword ptr [rbp-0x20], r15
+ lea rsi, bword ptr [rbp-0x28]
mov edx, 1
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Metrics.Instrument`1[double]:RecordMeasurement(double,System.ReadOnlySpan`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):this
call [rax]System.Diagnostics.Metrics.Instrument`1[double]:RecordMeasurement(double,System.ReadOnlySpan`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):this
- ;; size=69 bbWeight=0.50 PerfScore 14.42
-G_M12031_IG05:
+ ;; size=72 bbWeight=0.50 PerfScore 15.92
+G_M12031_IG07:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M12031_IG06:
- add rsp, 48
+G_M12031_IG08:
+ add rsp, 56
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 2.75
+ ;; size=11 bbWeight=1 PerfScore 3.25
+G_M12031_IG09:
+ mov rdi, 0xD1FFAB1E ; System.Net.NameResolutionMetrics
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M12031_IG04
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M12031_IG10:
+ mov rdi, 0xD1FFAB1E ; System.Net.NameResolutionMetrics
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M12031_IG06
+ ;; size=27 bbWeight=0 PerfScore 0.00
RWD00 dq 416312D000000000h ; 10000000
-; Total bytes of code 231, prolog size 28, PerfScore 46.21, instruction count 51, allocated bytes for code 231 (MethodHash=abf3d100) for method System.Net.NameResolutionMetrics:AfterResolution(System.TimeSpan,System.String,System.Exception) (FullOpts)
+; Total bytes of code 341, prolog size 35, PerfScore 55.33, instruction count 72, allocated bytes for code 341 (MethodHash=abf3d100) for method System.Net.NameResolutionMetrics:AfterResolution(System.TimeSpan,System.String,System.Exception) (FullOpts)
; ============================================================ 73 (29.08 % of base) - System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this ; Assembly listing for method System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 12 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 9 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 6, 6 ) ref -> rbx this class-hnd single-def <System.ComponentModel.Composition.CompositionException>
-; V01 arg1 [V01,T03] ( 3, 3 ) ref -> r15 class-hnd single-def <System.ComponentModel.Composition.CompositionError>
+; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r15 class-hnd single-def <System.ComponentModel.Composition.CompositionError>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
-; V03 tmp1 [V03,T01] ( 4, 8 ) ref -> r13 class-hnd exact single-def "NewArr temp" <System.ComponentModel.Composition.CompositionError[]>
+; V03 tmp1 [V03,T01] ( 4, 8 ) ref -> r14 class-hnd exact single-def "NewArr temp" <System.ComponentModel.Composition.CompositionError[]>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
-; V07 tmp5 [V07,T06] ( 2, 2 ) ref -> r15 class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
+; V07 tmp5 [V07,T03] ( 4, 3.50) ref -> r15 class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.ComponentModel.Composition.CompositionError]>
-; V10 tmp8 [V10,T07] ( 2, 2 ) ref -> r15 class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
-;* V11 tmp9 [V11,T10] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewArr temp" <System.ComponentModel.Composition.CompositionError[]>
-; V13 tmp11 [V13,T04] ( 3, 3 ) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-; V15 tmp13 [V15,T08] ( 2, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
-; V16 tmp14 [V16,T02] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
-; V17 cse0 [V17,T09] ( 2, 2 ) long -> rdi "CSE #02: moderate"
-; V18 cse1 [V18,T05] ( 3, 3 ) long -> r14 "CSE #01: aggressive"
+; V10 tmp8 [V10,T05] ( 3, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+; V11 tmp9 [V11,T04] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M19286_IG01:
push rbp
push r15
push r14
- push r13
push rbx
+ push rax
lea rbp, [rsp+0x20]
mov rbx, rdi
mov r15, rsi
- ;; size=19 bbWeight=1 PerfScore 6.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M19286_IG02:
- mov r14, 0xD1FFAB1E ; System.ComponentModel.Composition.CompositionError[]
- mov rdi, r14
+ mov rdi, 0xD1FFAB1E ; System.ComponentModel.Composition.CompositionError[]
mov esi, 1
call CORINFO_HELP_NEWARR_1_OBJ
- mov r13, rax
- lea rdi, bword ptr [r13+0x10]
+ mov r14, rax
+ lea rdi, bword ptr [r14+0x10]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rsi, 0xD1FFAB1E
mov qword ptr [rbx+0x68], rsi
xor rsi, rsi
mov gword ptr [rbx+0x10], rsi
- ;; size=58 bbWeight=1 PerfScore 6.25
+ ;; size=55 bbWeight=1 PerfScore 6.00
G_M19286_IG03:
mov gword ptr [rbx+0x20], rsi
- mov rsi, r13
+ mov rsi, r14
mov rdi, 0xD1FFAB1E ; Microsoft.Internal.Requires:NotNullElements[System.ComponentModel.Composition.CompositionError](System.Collections.Generic.IEnumerable`1[System.ComponentModel.Composition.CompositionError],System.String)
mov rdx, 0xD1FFAB1E ; 'errors'
mov rax, 0xD1FFAB1E ; code for Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
call [rax]Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je SHORT G_M19286_IG06
- ;; size=54 bbWeight=1 PerfScore 9.25
+ je G_M19286_IG12
+ ;; size=58 bbWeight=1 PerfScore 9.25
G_M19286_IG04:
- mov esi, 1
- mov rdi, r14
- call CORINFO_HELP_NEWARR_1_OBJ
+ mov rsi, r14
+ mov rdi, 0xD1FFAB1E ; System.Linq.Enumerable:ICollectionToArray[System.ComponentModel.Composition.CompositionError](System.Collections.Generic.ICollection`1[System.ComponentModel.Composition.CompositionError]):System.ComponentModel.Composition.CompositionError[]
+ mov rax, 0xD1FFAB1E ; code for System.Linq.Enumerable:ICollectionToArray[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.__Canon[]
+ call [rax]System.Linq.Enumerable:ICollectionToArray[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.__Canon[]
mov r15, rax
- mov r8d, 1
- mov rdi, r13
- mov rdx, r15
- xor esi, esi
- xor ecx, ecx
- mov rax, 0xD1FFAB1E ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
- call [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
+ test r15, r15
+ jne SHORT G_M19286_IG06
+ ;; size=33 bbWeight=1 PerfScore 5.25
+G_M19286_IG05:
+ mov edi, 2
+ mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
+ call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
+ int3
+ ;; size=18 bbWeight=0.50 PerfScore 1.88
+G_M19286_IG06:
+ cmp dword ptr [r15+0x08], 0
+ jne SHORT G_M19286_IG09
+ ;; size=7 bbWeight=1 PerfScore 4.00
+G_M19286_IG07:
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je SHORT G_M19286_IG13
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M19286_IG08:
+ mov rdi, 0xD1FFAB1E ; data for System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]:<Empty>k__BackingField
+ mov rsi, gword ptr [rdi]
+ jmp SHORT G_M19286_IG10
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M19286_IG09:
mov rdi, 0xD1FFAB1E ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
call CORINFO_HELP_NEWSFAST
mov r14, rax
lea rdi, bword ptr [r14+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rsi, r14
+ ;; size=33 bbWeight=0.50 PerfScore 1.75
+G_M19286_IG10:
lea rdi, bword ptr [rbx+0x70]
call CORINFO_HELP_ASSIGN_REF
nop
- ;; size=87 bbWeight=1 PerfScore 11.50
-G_M19286_IG05:
+ ;; size=10 bbWeight=1 PerfScore 1.75
+G_M19286_IG11:
+ add rsp, 8
pop rbx
- pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 3.50
-G_M19286_IG06:
+ ;; size=11 bbWeight=1 PerfScore 3.25
+G_M19286_IG12:
mov rdi, 0xD1FFAB1E ; System.Linq.Enumerable
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_NONGCSTATIC_BASE
call [rax]CORINFO_HELP_GET_NONGCSTATIC_BASE
- jmp SHORT G_M19286_IG04
+ jmp G_M19286_IG04
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M19286_IG13:
+ mov rdi, 0xD1FFAB1E ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp SHORT G_M19286_IG08
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 251, prolog size 13, PerfScore 36.50, instruction count 60, allocated bytes for code 251 (MethodHash=fe8bb4a9) for method System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
+; Total bytes of code 324, prolog size 12, PerfScore 43.38, instruction count 71, allocated bytes for code 324 (MethodHash=fe8bb4a9) for method System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
; ============================================================ 67 (15.09 % of base) - System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException ; Assembly listing for method System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 13 single block inlinees; 8 inlinees without PGO data
+; 0 inlinees with PGO data; 10 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T02] ( 4, 4 ) ref -> rbx class-hnd single-def <System.ComponentModel.Composition.Primitives.ComposablePart>
; V01 arg1 [V01,T03] ( 4, 4 ) ref -> r15 class-hnd single-def <System.ComponentModel.Composition.Primitives.ExportDefinition>
; V02 arg2 [V02,T04] ( 4, 4 ) ref -> r14 class-hnd single-def <System.Exception>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
; V04 tmp1 [V04,T00] ( 6, 12 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.CompositionException>
; V05 tmp2 [V05,T01] ( 4, 8 ) ref -> r15 class-hnd exact single-def "NewArr temp" <System.ComponentModel.Composition.CompositionError[]>
-; V06 tmp3 [V06,T06] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.ComponentModel.Composition.CompositionError>
+; V06 tmp3 [V06,T05] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.ComponentModel.Composition.CompositionError>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
-; V10 tmp7 [V10,T08] ( 2, 2 ) ref -> rbx class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
+; V10 tmp7 [V10,T06] ( 4, 3.50) ref -> rbx class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.ComponentModel.Composition.CompositionError]>
-; V13 tmp10 [V13,T09] ( 2, 2 ) ref -> rbx class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
-;* V14 tmp11 [V14,T12] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewArr temp" <System.ComponentModel.Composition.CompositionError[]>
-; V16 tmp13 [V16,T07] ( 3, 3 ) ref -> rbx class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-;* V17 tmp14 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-; V18 tmp15 [V18,T10] ( 2, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
-; V19 tmp16 [V19,T05] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
-; V20 cse0 [V20,T11] ( 2, 2 ) long -> rdi "CSE #02: moderate"
+; V13 tmp10 [V13,T08] ( 3, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+; V14 tmp11 [V14,T07] ( 3, 3 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
;
; Lcl frame size = 0
G_M65036_IG01:
push rbp
push r15
push r14
push r13
push rbx
lea rbp, [rsp+0x20]
mov rbx, rdi
mov r15, rsi
mov r14, rdx
;; size=22 bbWeight=1 PerfScore 6.25
G_M65036_IG02:
test rbx, rbx
- je G_M65036_IG08
+ je G_M65036_IG14
test r15, r15
- je G_M65036_IG07
+ je G_M65036_IG13
test r14, r14
- je G_M65036_IG06
+ je G_M65036_IG12
mov rdi, 0xD1FFAB1E ; System.ComponentModel.Composition.CompositionException
call CORINFO_HELP_NEWSFAST
mov r13, rax
mov rdi, rbx
mov rsi, r15
mov rdx, r14
mov rax, 0xD1FFAB1E ; code for System.ComponentModel.Composition.ErrorBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionError
call [rax]System.ComponentModel.Composition.ErrorBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionError
mov rbx, rax
mov rdi, 0xD1FFAB1E ; System.ComponentModel.Composition.CompositionError[]
mov esi, 1
call CORINFO_HELP_NEWARR_1_OBJ
mov r15, rax
lea rdi, bword ptr [r15+0x10]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov rsi, 0xD1FFAB1E
mov qword ptr [r13+0x68], rsi
xor rsi, rsi
mov gword ptr [r13+0x10], rsi
;; size=124 bbWeight=1 PerfScore 15.50
G_M65036_IG03:
mov gword ptr [r13+0x20], rsi
mov rsi, r15
mov rdi, 0xD1FFAB1E ; Microsoft.Internal.Requires:NotNullElements[System.ComponentModel.Composition.CompositionError](System.Collections.Generic.IEnumerable`1[System.ComponentModel.Composition.CompositionError],System.String)
mov rdx, 0xD1FFAB1E ; 'errors'
mov rax, 0xD1FFAB1E ; code for Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
call [rax]Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M65036_IG09
+ je G_M65036_IG15
;; size=58 bbWeight=1 PerfScore 9.25
G_M65036_IG04:
- mov esi, 1
- mov rdi, 0xD1FFAB1E ; System.ComponentModel.Composition.CompositionError[]
- call CORINFO_HELP_NEWARR_1_OBJ
+ mov rsi, r15
+ mov rdi, 0xD1FFAB1E ; System.Linq.Enumerable:ICollectionToArray[System.ComponentModel.Composition.CompositionError](System.Collections.Generic.ICollection`1[System.ComponentModel.Composition.CompositionError]):System.ComponentModel.Composition.CompositionError[]
+ mov rax, 0xD1FFAB1E ; code for System.Linq.Enumerable:ICollectionToArray[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.__Canon[]
+ call [rax]System.Linq.Enumerable:ICollectionToArray[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.__Canon[]
mov rbx, rax
- mov r8d, 1
- mov rdi, r15
- mov rdx, rbx
- xor esi, esi
- xor ecx, ecx
- mov rax, 0xD1FFAB1E ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
- call [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
+ test rbx, rbx
+ jne SHORT G_M65036_IG06
+ ;; size=33 bbWeight=1 PerfScore 5.25
+G_M65036_IG05:
+ mov edi, 2
+ mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
+ call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
+ int3
+ ;; size=18 bbWeight=0.50 PerfScore 1.88
+G_M65036_IG06:
+ cmp dword ptr [rbx+0x08], 0
+ jne SHORT G_M65036_IG09
+ ;; size=6 bbWeight=1 PerfScore 4.00
+G_M65036_IG07:
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M65036_IG16
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M65036_IG08:
+ mov rdi, 0xD1FFAB1E ; data for System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]:<Empty>k__BackingField
+ mov rsi, gword ptr [rdi]
+ jmp SHORT G_M65036_IG10
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M65036_IG09:
mov rdi, 0xD1FFAB1E ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
call CORINFO_HELP_NEWSFAST
mov r15, rax
lea rdi, bword ptr [r15+0x08]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov rsi, r15
+ ;; size=33 bbWeight=0.50 PerfScore 1.75
+G_M65036_IG10:
lea rdi, bword ptr [r13+0x70]
call CORINFO_HELP_ASSIGN_REF
mov rax, r13
- ;; size=96 bbWeight=1 PerfScore 11.50
-G_M65036_IG05:
+ ;; size=12 bbWeight=1 PerfScore 1.75
+G_M65036_IG11:
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 3.50
-G_M65036_IG06:
+G_M65036_IG12:
mov edi, 0x2242
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.50 PerfScore 2.62
-G_M65036_IG07:
+G_M65036_IG13:
mov edi, 0x2174
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.50 PerfScore 2.62
-G_M65036_IG08:
+G_M65036_IG14:
mov edi, 0x2238
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.50 PerfScore 2.62
-G_M65036_IG09:
+G_M65036_IG15:
mov rdi, 0xD1FFAB1E ; System.Linq.Enumerable
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_NONGCSTATIC_BASE
call [rax]CORINFO_HELP_GET_NONGCSTATIC_BASE
jmp G_M65036_IG04
;; size=27 bbWeight=0 PerfScore 0.00
+G_M65036_IG16:
+ mov rdi, 0xD1FFAB1E ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M65036_IG08
+ ;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 444, prolog size 13, PerfScore 53.88, instruction count 96, allocated bytes for code 444 (MethodHash=d76c01f3) for method System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException (FullOpts)
+; Total bytes of code 511, prolog size 13, PerfScore 61.25, instruction count 108, allocated bytes for code 511 (MethodHash=d76c01f3) for method System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException (FullOpts)
; ============================================================ 49 (6.81 % of base) - System.Net.Http.Metrics.MetricsHandler:.ctor(System.Net.Http.HttpMessageHandler,System.Diagnostics.Metrics.IMeterFactory,byref):this ; Assembly listing for method System.Net.Http.Metrics.MetricsHandler:.ctor(System.Net.Http.HttpMessageHandler,System.Diagnostics.Metrics.IMeterFactory,byref):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 10 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T02] ( 6, 6 ) ref -> rbx this class-hnd single-def <System.Net.Http.Metrics.MetricsHandler>
; V01 arg1 [V01,T11] ( 3, 3 ) ref -> r13 class-hnd single-def <System.Net.Http.HttpMessageHandler>
; V02 arg2 [V02,T10] ( 4, 3.50) ref -> r14 class-hnd single-def <System.Diagnostics.Metrics.IMeterFactory>
; V03 arg3 [V03,T07] ( 5, 5 ) byref -> r15 single-def
; V04 OutArgs [V04 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <UNNAMED>
;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref
;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref single-def
-; V07 tmp3 [V07,T24] ( 3, 2 ) ref -> rsi
+; V07 tmp3 [V07,T25] ( 3, 2 ) ref -> rsi
;* V08 tmp4 [V08 ] ( 0, 0 ) byref -> zero-ref single-def
-; V09 tmp5 [V09,T22] ( 4, 3.50) ref -> rsi
+; V09 tmp5 [V09,T23] ( 4, 3.50) ref -> rsi
; V10 tmp6 [V10,T03] ( 4, 8 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Object>
; V11 tmp7 [V11,T04] ( 4, 8 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Diagnostics.Metrics.Meter>
-; V12 tmp8 [V12,T27] ( 2, 2 ) ref -> rsi class-hnd exact single-def "Inline return value spill temp" <System.Diagnostics.Metrics.UpDownCounter`1[long]>
+; V12 tmp8 [V12,T28] ( 2, 2 ) ref -> rsi class-hnd exact single-def "Inline return value spill temp" <System.Diagnostics.Metrics.UpDownCounter`1[long]>
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Diagnostics.Metrics.Meter+<>c__DisplayClass41_0`1[long]>
; V14 tmp10 [V14,T00] ( 11, 11 ) ref -> r13 class-hnd exact single-def "Inline stloc first use temp" <System.Diagnostics.Metrics.Meter+<>c__DisplayClass41_0`1[long]>
; V15 tmp11 [V15,T05] ( 4, 8 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Func`1[System.Diagnostics.Metrics.Instrument]>
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
; V17 tmp13 [V17,T14] ( 2, 4 ) ref -> [rbp-0x30] class-hnd exact spill-single-def "impAppendStmt" <System.String>
; V18 tmp14 [V18,T15] ( 2, 4 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "impAppendStmt" <System.String>
; V19 tmp15 [V19,T16] ( 2, 4 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "impAppendStmt" <System.String>
; V20 tmp16 [V20,T17] ( 2, 4 ) ref -> [rbp-0x48] class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
-; V21 tmp17 [V21,T28] ( 2, 2 ) ref -> rsi class-hnd exact single-def "Inline return value spill temp" <System.Diagnostics.Metrics.Histogram`1[double]>
+; V21 tmp17 [V21,T29] ( 2, 2 ) ref -> rsi class-hnd exact single-def "Inline return value spill temp" <System.Diagnostics.Metrics.Histogram`1[double]>
;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Diagnostics.Metrics.Meter+<>c__DisplayClass39_0`1[double]>
-; V23 tmp19 [V23,T01] ( 11, 11 ) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <System.Diagnostics.Metrics.Meter+<>c__DisplayClass39_0`1[double]>
-;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Diagnostics.Metrics.InstrumentAdvice`1[double]>
-; V25 tmp21 [V25,T06] ( 4, 8 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Func`1[System.Diagnostics.Metrics.Instrument]>
+; V23 tmp19 [V23,T01] ( 11, 11 ) ref -> r13 class-hnd exact single-def "Inline stloc first use temp" <System.Diagnostics.Metrics.Meter+<>c__DisplayClass39_0`1[double]>
+; V24 tmp20 [V24,T18] ( 2, 4 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Diagnostics.Metrics.InstrumentAdvice`1[double]>
+; V25 tmp21 [V25,T06] ( 4, 8 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Func`1[System.Diagnostics.Metrics.Instrument]>
;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
-; V27 tmp23 [V27,T18] ( 2, 4 ) ref -> r12 class-hnd exact single-def "impAppendStmt" <System.String>
-; V28 tmp24 [V28,T19] ( 2, 4 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "impAppendStmt" <System.String>
-; V29 tmp25 [V29,T20] ( 2, 4 ) ref -> [rbp-0x58] class-hnd exact spill-single-def "impAppendStmt" <System.String>
-; V30 tmp26 [V30,T21] ( 2, 4 ) ref -> [rbp-0x60] class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
+; V27 tmp23 [V27,T19] ( 2, 4 ) ref -> r12 class-hnd exact single-def "impAppendStmt" <System.String>
+; V28 tmp24 [V28,T20] ( 2, 4 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "impAppendStmt" <System.String>
+; V29 tmp25 [V29,T21] ( 2, 4 ) ref -> [rbp-0x58] class-hnd exact spill-single-def "impAppendStmt" <System.String>
+; V30 tmp26 [V30,T22] ( 2, 4 ) ref -> [rbp-0x60] class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
; V31 tmp27 [V31,T12] ( 3, 4 ) ref -> rax single-def "argument with side effect"
; V32 tmp28 [V32,T13] ( 3, 4 ) ref -> rax single-def "argument with side effect"
-; V33 cse0 [V33,T23] ( 3, 3 ) ref -> [rbp-0x68] spill-single-def "CSE #08: moderate"
+; V33 cse0 [V33,T24] ( 3, 3 ) ref -> [rbp-0x68] spill-single-def "CSE #08: moderate"
; V34 rat0 [V34,T08] ( 4, 7 ) ref -> rsi "replacement local"
-; V35 rat1 [V35,T25] ( 3, 2 ) long -> rdi "CSE for expectedClsNode"
+; V35 rat1 [V35,T26] ( 3, 2 ) long -> rdi "CSE for expectedClsNode"
; V36 rat2 [V36,T09] ( 4, 7 ) ref -> rsi "replacement local"
-; V37 rat3 [V37,T26] ( 3, 2 ) long -> rdi "CSE for expectedClsNode"
+; V37 rat3 [V37,T27] ( 3, 2 ) long -> rdi "CSE for expectedClsNode"
;
; Lcl frame size = 72
G_M65200_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 72
lea rbp, [rsp+0x70]
mov rbx, rdi
mov r13, rsi
mov r14, rdx
mov r15, rcx
;; size=31 bbWeight=1 PerfScore 7.75
G_M65200_IG02:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpMessageHandler:.ctor():this
call [rax]System.Net.Http.HttpMessageHandler:.ctor():this
lea rdi, bword ptr [rbx+0x08]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
test r14, r14
je SHORT G_M65200_IG04
;; size=32 bbWeight=1 PerfScore 6.50
G_M65200_IG03:
mov rdi, r14
mov rsi, 0xD1FFAB1E ; 'System.Net.Http'
xor rdx, rdx
xor rcx, rcx
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Metrics.MeterFactoryExtensions:Create(System.Diagnostics.Metrics.IMeterFactory,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Diagnostics.Metrics.Meter
call [rax]System.Diagnostics.Metrics.MeterFactoryExtensions:Create(System.Diagnostics.Metrics.IMeterFactory,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Diagnostics.Metrics.Meter
mov rsi, rax
jmp SHORT G_M65200_IG05
;; size=34 bbWeight=0.50 PerfScore 3.25
G_M65200_IG04:
xor rsi, rsi
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M65200_IG05:
test rsi, rsi
jne SHORT G_M65200_IG08
;; size=5 bbWeight=1 PerfScore 1.25
G_M65200_IG06:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M65200_IG15
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M65200_IG07:
mov rdi, 0xD1FFAB1E ; data for System.Net.Http.Metrics.MetricsHandler+SharedMeter:<Instance>k__BackingField
mov rsi, gword ptr [rdi]
;; size=13 bbWeight=0.50 PerfScore 1.12
G_M65200_IG08:
mov rdi, r15
call CORINFO_HELP_CHECKED_ASSIGN_REF
mov r14, gword ptr [r15]
cmp byte ptr [r14], r14b
mov rdi, 0xD1FFAB1E ; System.Diagnostics.Metrics.Meter+<>c__DisplayClass41_0`1[long]
call CORINFO_HELP_NEWSFAST
mov r13, rax
lea rdi, bword ptr [r13+0x08]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; 'http.client.active_requests'
mov gword ptr [r13+0x10], rdi
mov rdi, 0xD1FFAB1E ; '{request}'
mov gword ptr [r13+0x18], rdi
mov rdi, 0xD1FFAB1E ; 'Number of outbound HTTP requests that are currently active on t'
mov gword ptr [r13+0x20], rdi
xor rdi, rdi
mov gword ptr [r13+0x28], rdi
mov rdi, 0xD1FFAB1E ; System.Func`1[System.Diagnostics.Metrics.Instrument]
call CORINFO_HELP_NEWSFAST
mov r12, rax
mov rax, gword ptr [r13+0x10]
mov gword ptr [rbp-0x30], rax
mov rcx, gword ptr [r13+0x18]
mov gword ptr [rbp-0x38], rcx
mov rdx, gword ptr [r13+0x20]
mov gword ptr [rbp-0x40], rdx
mov r8, gword ptr [r13+0x28]
mov gword ptr [rbp-0x68], r8
mov gword ptr [rbp-0x48], r8
lea rdi, bword ptr [r12+0x08]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Diagnostics.Metrics.Meter+<>c__DisplayClass41_0`1[long]:<CreateUpDownCounter>b__0():System.Diagnostics.Metrics.Instrument:this
mov qword ptr [r12+0x18], rdi
mov gword ptr [rsp], r12
mov rdi, r14
mov rdx, gword ptr [rbp-0x30]
mov rcx, gword ptr [rbp-0x38]
mov r8, gword ptr [rbp-0x40]
mov r9, gword ptr [rbp-0x48]
mov rsi, 0xD1FFAB1E ; 'System.Diagnostics.Metrics.UpDownCounter`1[System.Int64]'
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Metrics.Meter:GetOrCreateInstrument[long](System.Type,System.String,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Func`1[System.Diagnostics.Metrics.Instrument]):System.Diagnostics.Metrics.Instrument:this
call [rax]System.Diagnostics.Metrics.Meter:GetOrCreateInstrument[long](System.Type,System.String,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Func`1[System.Diagnostics.Metrics.Instrument]):System.Diagnostics.Metrics.Instrument:this
mov rsi, rax
test rsi, rsi
je SHORT G_M65200_IG10
;; size=227 bbWeight=1 PerfScore 42.25
G_M65200_IG09:
mov rdi, 0xD1FFAB1E ; System.Diagnostics.Metrics.UpDownCounter`1[long]
cmp qword ptr [rsi], rdi
- jne G_M65200_IG17
+ jne G_M65200_IG18
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M65200_IG10:
lea rdi, bword ptr [rbx+0x10]
call CORINFO_HELP_ASSIGN_REF
mov r15, gword ptr [r15]
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M65200_IG16
+ ;; size=31 bbWeight=1 PerfScore 7.75
+G_M65200_IG11:
+ mov rdi, 0xD1FFAB1E ; data for System.Net.Http.DiagnosticsHelper:<ShortHistogramAdvice>k__BackingField
+ mov r14, gword ptr [rdi]
cmp byte ptr [r15], r15b
mov rdi, 0xD1FFAB1E ; System.Diagnostics.Metrics.Meter+<>c__DisplayClass39_0`1[double]
call CORINFO_HELP_NEWSFAST
- mov r14, rax
- lea rdi, bword ptr [r14+0x08]
+ mov r13, rax
+ lea rdi, bword ptr [r13+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; 'http.client.request.duration'
- mov gword ptr [r14+0x10], rdi
+ mov gword ptr [r13+0x10], rdi
mov rdi, 0xD1FFAB1E ; 's'
- mov gword ptr [r14+0x18], rdi
+ mov gword ptr [r13+0x18], rdi
mov rdi, 0xD1FFAB1E ; 'Duration of HTTP client requests.'
- mov gword ptr [r14+0x20], rdi
+ mov gword ptr [r13+0x20], rdi
xor rdi, rdi
- mov gword ptr [r14+0x28], rdi
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rdi]
- lea rdi, bword ptr [r14+0x30]
+ mov gword ptr [r13+0x28], rdi
+ lea rdi, bword ptr [r13+0x30]
+ mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; System.Func`1[System.Diagnostics.Metrics.Instrument]
call CORINFO_HELP_NEWSFAST
- mov r13, rax
- mov r12, gword ptr [r14+0x10]
- mov rax, gword ptr [r14+0x18]
+ mov r14, rax
+ mov r12, gword ptr [r13+0x10]
+ mov rax, gword ptr [r13+0x18]
mov gword ptr [rbp-0x50], rax
- mov rcx, gword ptr [r14+0x20]
+ mov rcx, gword ptr [r13+0x20]
mov gword ptr [rbp-0x58], rcx
mov rdx, gword ptr [rbp-0x68]
mov gword ptr [rbp-0x60], rdx
- lea rdi, bword ptr [r13+0x08]
- mov rsi, r14
+ lea rdi, bword ptr [r14+0x08]
+ mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Diagnostics.Metrics.Meter+<>c__DisplayClass39_0`1[double]:<CreateHistogram>b__0():System.Diagnostics.Metrics.Instrument:this
- mov qword ptr [r13+0x18], rdi
- mov gword ptr [rsp], r13
+ mov qword ptr [r14+0x18], rdi
+ mov gword ptr [rsp], r14
mov rdi, r15
mov rdx, r12
mov rcx, gword ptr [rbp-0x50]
mov r8, gword ptr [rbp-0x58]
mov r9, gword ptr [rbp-0x60]
mov rsi, 0xD1FFAB1E ; 'System.Diagnostics.Metrics.Histogram`1[System.Double]'
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Metrics.Meter:GetOrCreateInstrument[double](System.Type,System.String,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Func`1[System.Diagnostics.Metrics.Instrument]):System.Diagnostics.Metrics.Instrument:this
call [rax]System.Diagnostics.Metrics.Meter:GetOrCreateInstrument[double](System.Type,System.String,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Func`1[System.Diagnostics.Metrics.Instrument]):System.Diagnostics.Metrics.Instrument:this
mov rsi, rax
test rsi, rsi
- ;; size=237 bbWeight=1 PerfScore 41.50
-G_M65200_IG11:
je SHORT G_M65200_IG13
- ;; size=2 bbWeight=1 PerfScore 1.00
+ ;; size=230 bbWeight=1 PerfScore 39.25
G_M65200_IG12:
mov rdi, 0xD1FFAB1E ; System.Diagnostics.Metrics.Histogram`1[double]
cmp qword ptr [rsi], rdi
- jne SHORT G_M65200_IG16
+ jne SHORT G_M65200_IG17
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M65200_IG13:
lea rdi, bword ptr [rbx+0x18]
call CORINFO_HELP_ASSIGN_REF
nop
;; size=10 bbWeight=1 PerfScore 1.75
G_M65200_IG14:
add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M65200_IG15:
mov rdi, 0xD1FFAB1E ; System.Net.Http.Metrics.MetricsHandler+SharedMeter
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M65200_IG07
;; size=27 bbWeight=0 PerfScore 0.00
G_M65200_IG16:
- mov rsi, rax
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
- call [rax]CORINFO_HELP_CHKCASTCLASS
- int3
- ;; size=16 bbWeight=0 PerfScore 0.00
+ mov rdi, 0xD1FFAB1E ; System.Net.Http.DiagnosticsHelper
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M65200_IG11
+ ;; size=27 bbWeight=0 PerfScore 0.00
G_M65200_IG17:
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
int3
;; size=16 bbWeight=0 PerfScore 0.00
+G_M65200_IG18:
+ mov rsi, rax
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
+ call [rax]CORINFO_HELP_CHKCASTCLASS
+ int3
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 720, prolog size 19, PerfScore 117.12, instruction count 161, allocated bytes for code 720 (MethodHash=405b014f) for method System.Net.Http.Metrics.MetricsHandler:.ctor(System.Net.Http.HttpMessageHandler,System.Diagnostics.Metrics.IMeterFactory,byref):this (FullOpts)
+; Total bytes of code 769, prolog size 19, PerfScore 121.62, instruction count 169, allocated bytes for code 769 (MethodHash=405b014f) for method System.Net.Http.Metrics.MetricsHandler:.ctor(System.Net.Http.HttpMessageHandler,System.Diagnostics.Metrics.IMeterFactory,byref):this (FullOpts)
; ============================================================ 44 (314.29 % of base) - System.Net.Http.DiagnosticsHelper:get_ShortHistogramAdvice():System.Diagnostics.Metrics.InstrumentAdvice`1[double] ; Assembly listing for method System.Net.Http.DiagnosticsHelper:get_ShortHistogramAdvice():System.Diagnostics.Metrics.InstrumentAdvice`1[double] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M46385_IG01:
- ;; size=0 bbWeight=1 PerfScore 0.00
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M46385_IG02:
- mov rax, 0xD1FFAB1E ; const ptr
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je SHORT G_M46385_IG05
+ ;; size=15 bbWeight=1 PerfScore 4.25
+G_M46385_IG03:
+ mov rax, 0xD1FFAB1E ; data for System.Net.Http.DiagnosticsHelper:<ShortHistogramAdvice>k__BackingField
mov rax, gword ptr [rax]
;; size=13 bbWeight=1 PerfScore 2.25
-G_M46385_IG03:
+G_M46385_IG04:
+ add rsp, 8
ret
- ;; size=1 bbWeight=1 PerfScore 1.00
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M46385_IG05:
+ mov rdi, 0xD1FFAB1E ; System.Net.Http.DiagnosticsHelper
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+ call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp SHORT G_M46385_IG03
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 14, prolog size 0, PerfScore 3.25, instruction count 3, allocated bytes for code 14 (MethodHash=73d74ace) for method System.Net.Http.DiagnosticsHelper:get_ShortHistogramAdvice():System.Diagnostics.Metrics.InstrumentAdvice`1[double] (FullOpts)
+; Total bytes of code 58, prolog size 1, PerfScore 8.75, instruction count 12, allocated bytes for code 58 (MethodHash=73d74ace) for method System.Net.Http.DiagnosticsHelper:get_ShortHistogramAdvice():System.Diagnostics.Metrics.InstrumentAdvice`1[double] (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/85fb4acc0642acf306ae779d8752fb81 |
Top method improvements-422 (-39.59 % of base) - System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this ; Assembly listing for method System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
-; 0 inlinees with PGO data; 27 single block inlinees; 6 inlinees without PGO data
+; 0 inlinees with PGO data; 13 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T03] ( 12, 15.50) ref -> rbx this class-hnd single-def <System.Net.HttpWebResponse>
-; V01 loc0 [V01,T02] ( 12, 18 ) ref -> [rbp-0x28] do-not-enreg[M] class-hnd EH-live <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
+; V01 loc0 [V01,T02] ( 12, 18 ) ref -> [rbp-0x20] do-not-enreg[M] class-hnd EH-live <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
-; V05 tmp1 [V05,T12] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Net.WebHeaderCollection>
+; V05 tmp1 [V05,T10] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Net.WebHeaderCollection>
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]>
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Net.WebHeaderCollection>
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]>
;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Net.WebHeaderCollection>
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V13 tmp9 [V13,T20] ( 2, 2 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.StringComparer>
+; V13 tmp9 [V13,T12] ( 2, 2 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.StringComparer>
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
-; V15 tmp11 [V15,T19] ( 5, 2.50) ref -> rsi
-; V16 tmp12 [V16,T21] ( 3, 1.50) ref -> r13 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
-; V17 tmp13 [V17,T15] ( 3, 3 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.Net.Http.Headers.HttpResponseHeaders>
-; V18 tmp14 [V18,T13] ( 4, 4 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24>
-; V19 tmp15 [V19,T22] ( 3, 1.50) ref -> r13 class-hnd exact "Inline return value spill temp" <System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
-; V20 tmp16 [V20,T16] ( 3, 3 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
-;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
-; V22 tmp18 [V22,T26] ( 3, 1.50) int -> r14 "Inline stloc first use temp"
-; V23 tmp19 [V23,T10] ( 5, 5 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
-;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-;* V25 tmp21 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V26 tmp22 [V26,T23] ( 3, 1.50) ref -> r13 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
-; V27 tmp23 [V27,T17] ( 3, 3 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.Net.Http.Headers.HttpContentHeaders>
-; V28 tmp24 [V28,T14] ( 4, 4 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24>
-; V29 tmp25 [V29,T24] ( 3, 1.50) ref -> r13 class-hnd exact "Inline return value spill temp" <System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
-; V30 tmp26 [V30,T18] ( 3, 3 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
-;* V31 tmp27 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
-; V32 tmp28 [V32,T27] ( 3, 1.50) int -> r14 "Inline stloc first use temp"
-; V33 tmp29 [V33,T11] ( 5, 5 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
-;* V34 tmp30 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-;* V35 tmp31 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V36 tmp32 [V36,T06] ( 2, 8 ) ref -> r15 "field V02.key (fldOffset=0x0)" P-INDEP
-; V37 tmp33 [V37,T07] ( 2, 8 ) ref -> rsi "field V02.value (fldOffset=0x8)" P-INDEP
-; V38 tmp34 [V38,T08] ( 2, 8 ) ref -> r15 "field V03.key (fldOffset=0x0)" P-INDEP
-; V39 tmp35 [V39,T09] ( 2, 8 ) ref -> rsi "field V03.value (fldOffset=0x8)" P-INDEP
-;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref "field V06.key (fldOffset=0x0)" P-DEP
-;* V41 tmp37 [V41 ] ( 0, 0 ) ref -> zero-ref "field V06.value (fldOffset=0x8)" P-DEP
-;* V42 tmp38 [V42 ] ( 0, 0 ) ref -> zero-ref "field V09.key (fldOffset=0x0)" P-DEP
-;* V43 tmp39 [V43 ] ( 0, 0 ) ref -> zero-ref "field V09.value (fldOffset=0x8)" P-DEP
-; V44 tmp40 [V44,T04] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V45 tmp41 [V45,T00] ( 3, 24 ) ref -> r14 "argument with side effect"
-; V46 tmp42 [V46,T05] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V47 tmp43 [V47,T01] ( 3, 24 ) ref -> r14 "argument with side effect"
-; V48 cse0 [V48,T25] ( 3, 1.50) ref -> rdi "CSE #05: moderate"
-; V49 rat0 [V49 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
+; V15 tmp11 [V15,T11] ( 5, 2.50) ref -> rsi
+;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
+;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
+;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
+;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
+; V20 tmp16 [V20,T06] ( 2, 8 ) ref -> r15 "field V02.key (fldOffset=0x0)" P-INDEP
+; V21 tmp17 [V21,T07] ( 2, 8 ) ref -> rsi "field V02.value (fldOffset=0x8)" P-INDEP
+; V22 tmp18 [V22,T08] ( 2, 8 ) ref -> r15 "field V03.key (fldOffset=0x0)" P-INDEP
+; V23 tmp19 [V23,T09] ( 2, 8 ) ref -> rsi "field V03.value (fldOffset=0x8)" P-INDEP
+;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref "field V06.key (fldOffset=0x0)" P-DEP
+;* V25 tmp21 [V25 ] ( 0, 0 ) ref -> zero-ref "field V06.value (fldOffset=0x8)" P-DEP
+;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref "field V09.key (fldOffset=0x0)" P-DEP
+;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref "field V09.value (fldOffset=0x8)" P-DEP
+; V28 tmp24 [V28,T04] ( 2, 16 ) ref -> rdx "argument with side effect"
+; V29 tmp25 [V29,T00] ( 3, 24 ) ref -> r14 "argument with side effect"
+; V30 tmp26 [V30,T05] ( 2, 16 ) ref -> rdx "argument with side effect"
+; V31 tmp27 [V31,T01] ( 3, 24 ) ref -> r14 "argument with side effect"
+; V32 cse0 [V32,T13] ( 3, 1.50) ref -> rdi "CSE #05: moderate"
+; V33 rat0 [V33 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M7504_IG01:
push rbp
push r15
push r14
- push r13
push rbx
- sub rsp, 16
+ sub rsp, 24
lea rbp, [rsp+0x30]
mov qword ptr [rbp-0x30], rsp
mov rbx, rdi
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=22 bbWeight=1 PerfScore 6.00
G_M7504_IG02:
cmp gword ptr [rbx+0x08], 0
- je G_M7504_IG26
+ je G_M7504_IG15
cmp gword ptr [rbx+0x20], 0
- jne G_M7504_IG24
+ jne G_M7504_IG13
;; size=22 bbWeight=1 PerfScore 8.00
G_M7504_IG03:
mov rdi, 0xD1FFAB1E ; System.Net.WebHeaderCollection
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M7504_IG27
+ je G_M7504_IG16
;; size=37 bbWeight=0.50 PerfScore 2.88
G_M7504_IG04:
mov rdi, 0xD1FFAB1E ; data for System.Collections.Specialized.NameObjectCollectionBase:s_defaultComparer
mov rdi, gword ptr [rdi]
mov rsi, rdi
test rsi, rsi
cmove rsi, rdi
lea rdi, bword ptr [r15+0x10]
call CORINFO_HELP_ASSIGN_REF
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Collections.Specialized.NameObjectCollectionBase:Reset():this
call [rax]System.Collections.Specialized.NameObjectCollectionBase:Reset():this
lea rdi, bword ptr [rbx+0x20]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rdi, gword ptr [rbx+0x08]
mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpResponseMessage:get_Headers():System.Net.Http.Headers.HttpResponseHeaders:this
cmp dword ptr [rdi], edi
call [rax]System.Net.Http.HttpResponseMessage:get_Headers():System.Net.Http.Headers.HttpResponseHeaders:this
- mov r15, rax
- cmp dword ptr [r15+0x10], 0
- je SHORT G_M7504_IG05
- mov rdi, 0xD1FFAB1E ; System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24
- call CORINFO_HELP_NEWSFAST
- mov r13, rax
- xor edi, edi
- mov dword ptr [r13+0x18], edi
- lea rdi, bword ptr [r13+0x08]
- mov rsi, r15
- call CORINFO_HELP_ASSIGN_REF
- jmp SHORT G_M7504_IG09
- ;; size=125 bbWeight=0.50 PerfScore 14.38
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
+ cmp dword ptr [rdi], edi
+ call [rax]System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
+ mov gword ptr [rbp-0x20], rax
+ ;; size=98 bbWeight=0.50 PerfScore 12.75
G_M7504_IG05:
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je G_M7504_IG28
- ;; size=19 bbWeight=0.50 PerfScore 2.12
-G_M7504_IG06:
- mov rdi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Value
- mov r15, gword ptr [rdi]
- mov r14d, dword ptr [r15+0x08]
- test r14d, r14d
- je SHORT G_M7504_IG07
- mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
- call CORINFO_HELP_NEWSFAST
- mov r13, rax
- mov dword ptr [r13+0x08], -1
- mov dword ptr [r13+0x0C], r14d
- lea rdi, bword ptr [r13+0x10]
- mov rsi, r15
- call CORINFO_HELP_ASSIGN_REF
- jmp SHORT G_M7504_IG09
- ;; size=66 bbWeight=0.50 PerfScore 6.38
-G_M7504_IG07:
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je G_M7504_IG29
- ;; size=19 bbWeight=0.50 PerfScore 2.12
-G_M7504_IG08:
- mov rdi, 0xD1FFAB1E ; data for System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Empty
- mov r13, gword ptr [rdi]
- ;; size=13 bbWeight=0.50 PerfScore 1.12
-G_M7504_IG09:
- mov gword ptr [rbp-0x28], r13
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M7504_IG10:
- jmp SHORT G_M7504_IG12
+ jmp SHORT G_M7504_IG07
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M7504_IG11:
- mov rdi, gword ptr [rbp-0x28]
+G_M7504_IG06:
+ mov rdi, gword ptr [rbp-0x20]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]:this
call [r11]System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]:this
mov r15, rax
mov rsi, rdx
mov r14, gword ptr [rbx+0x20]
mov rdi, 0xD1FFAB1E ; ', '
mov rax, 0xD1FFAB1E ; code for System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String
call [rax]System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String
mov rdx, rax
mov rdi, r14
mov rsi, r15
mov rax, qword ptr [r14]
mov rax, qword ptr [rax+0x50]
call [rax+0x08]System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this
;; size=68 bbWeight=4 PerfScore 72.00
-G_M7504_IG12:
- mov rdi, gword ptr [rbp-0x28]
+G_M7504_IG07:
+ mov rdi, gword ptr [rbp-0x20]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
test eax, eax
- jne SHORT G_M7504_IG11
+ jne SHORT G_M7504_IG06
;; size=21 bbWeight=4 PerfScore 22.00
-G_M7504_IG13:
- mov rdi, gword ptr [rbp-0x28]
+G_M7504_IG08:
+ mov rdi, gword ptr [rbp-0x20]
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
mov rdi, gword ptr [rbx+0x08]
mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpResponseMessage:get_Content():System.Net.Http.HttpContent:this
cmp dword ptr [rdi], edi
call [rax]System.Net.Http.HttpResponseMessage:get_Content():System.Net.Http.HttpContent:this
test rax, rax
- je G_M7504_IG24
+ je G_M7504_IG13
mov rdi, gword ptr [rbx+0x08]
mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpResponseMessage:get_Content():System.Net.Http.HttpContent:this
cmp dword ptr [rdi], edi
call [rax]System.Net.Http.HttpResponseMessage:get_Content():System.Net.Http.HttpContent:this
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Net.Http.HttpContent:get_Headers():System.Net.Http.Headers.HttpContentHeaders:this
cmp dword ptr [rdi], edi
call [rax]System.Net.Http.HttpContent:get_Headers():System.Net.Http.Headers.HttpContentHeaders:this
- mov r15, rax
- cmp dword ptr [r15+0x10], 0
- jne SHORT G_M7504_IG18
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je G_M7504_IG30
- ;; size=108 bbWeight=0.50 PerfScore 18.50
-G_M7504_IG14:
- mov rdi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Value
- mov r15, gword ptr [rdi]
- mov r14d, dword ptr [r15+0x08]
- test r14d, r14d
- je SHORT G_M7504_IG15
- mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
- call CORINFO_HELP_NEWSFAST
- mov r13, rax
- mov dword ptr [r13+0x08], -1
- mov dword ptr [r13+0x0C], r14d
- lea rdi, bword ptr [r13+0x10]
- mov rsi, r15
- call CORINFO_HELP_ASSIGN_REF
- jmp SHORT G_M7504_IG17
- ;; size=66 bbWeight=0.50 PerfScore 6.38
-G_M7504_IG15:
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je G_M7504_IG31
- ;; size=19 bbWeight=0.50 PerfScore 2.12
-G_M7504_IG16:
- mov rdi, 0xD1FFAB1E ; data for System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Empty
- mov r13, gword ptr [rdi]
- ;; size=13 bbWeight=0.50 PerfScore 1.12
-G_M7504_IG17:
- jmp SHORT G_M7504_IG19
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
+ cmp dword ptr [rdi], edi
+ call [rax]System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
+ mov gword ptr [rbp-0x20], rax
+ ;; size=100 bbWeight=0.50 PerfScore 18.00
+G_M7504_IG09:
+ jmp SHORT G_M7504_IG11
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M7504_IG18:
- mov rdi, 0xD1FFAB1E ; System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24
- call CORINFO_HELP_NEWSFAST
- mov r13, rax
- xor edi, edi
- mov dword ptr [r13+0x18], edi
- lea rdi, bword ptr [r13+0x08]
- mov rsi, r15
- call CORINFO_HELP_ASSIGN_REF
- ;; size=36 bbWeight=0.50 PerfScore 2.25
-G_M7504_IG19:
- mov gword ptr [rbp-0x28], r13
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M7504_IG20:
- jmp SHORT G_M7504_IG22
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M7504_IG21:
- mov rdi, gword ptr [rbp-0x28]
+G_M7504_IG10:
+ mov rdi, gword ptr [rbp-0x20]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]:this
call [r11]System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]:this
mov r15, rax
mov rsi, rdx
mov r14, gword ptr [rbx+0x20]
mov rdi, 0xD1FFAB1E ; ', '
mov rax, 0xD1FFAB1E ; code for System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String
call [rax]System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String
mov rdx, rax
mov rdi, r14
mov rsi, r15
mov rax, qword ptr [r14]
mov rax, qword ptr [rax+0x50]
call [rax+0x08]System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this
;; size=68 bbWeight=4 PerfScore 72.00
-G_M7504_IG22:
- mov rdi, gword ptr [rbp-0x28]
+G_M7504_IG11:
+ mov rdi, gword ptr [rbp-0x20]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
test eax, eax
- jne SHORT G_M7504_IG21
+ jne SHORT G_M7504_IG10
;; size=21 bbWeight=4 PerfScore 22.00
-G_M7504_IG23:
- mov rdi, gword ptr [rbp-0x28]
+G_M7504_IG12:
+ mov rdi, gword ptr [rbp-0x20]
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
;; size=17 bbWeight=0.50 PerfScore 2.12
-G_M7504_IG24:
+G_M7504_IG13:
mov rax, gword ptr [rbx+0x20]
;; size=4 bbWeight=1 PerfScore 2.00
-G_M7504_IG25:
- add rsp, 16
+G_M7504_IG14:
+ add rsp, 24
pop rbx
- pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=1 PerfScore 3.75
-G_M7504_IG26:
+ ;; size=11 bbWeight=1 PerfScore 3.25
+G_M7504_IG15:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowObjectDisposedException(System.Object)
call [rax]System.ThrowHelper:ThrowObjectDisposedException(System.Object)
int3
;; size=16 bbWeight=0.50 PerfScore 1.88
-G_M7504_IG27:
+G_M7504_IG16:
mov rdi, 0xD1FFAB1E ; System.Collections.Specialized.NameObjectCollectionBase
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M7504_IG04
;; size=27 bbWeight=0 PerfScore 0.00
-G_M7504_IG28:
- mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
- call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M7504_IG06
- ;; size=27 bbWeight=0 PerfScore 0.00
-G_M7504_IG29:
- mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
- call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M7504_IG08
- ;; size=27 bbWeight=0 PerfScore 0.00
-G_M7504_IG30:
- mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
- call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M7504_IG14
- ;; size=27 bbWeight=0 PerfScore 0.00
-G_M7504_IG31:
- mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
- call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M7504_IG16
- ;; size=27 bbWeight=0 PerfScore 0.00
-G_M7504_IG32:
+G_M7504_IG17:
push rbp
push r15
push r14
- push r13
push rbx
- sub rsp, 16
+ push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x30]
- ;; size=23 bbWeight=0 PerfScore 0.00
-G_M7504_IG33:
- cmp gword ptr [rbp-0x28], 0
- je SHORT G_M7504_IG34
- mov rdi, gword ptr [rbp-0x28]
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M7504_IG18:
+ cmp gword ptr [rbp-0x20], 0
+ je SHORT G_M7504_IG19
+ mov rdi, gword ptr [rbp-0x20]
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
;; size=24 bbWeight=0 PerfScore 0.00
-G_M7504_IG34:
+G_M7504_IG19:
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M7504_IG35:
- add rsp, 16
+G_M7504_IG20:
+ add rsp, 8
pop rbx
- pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0 PerfScore 0.00
-G_M7504_IG36:
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M7504_IG21:
push rbp
push r15
push r14
- push r13
push rbx
- sub rsp, 16
+ push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x30]
- ;; size=23 bbWeight=0 PerfScore 0.00
-G_M7504_IG37:
- cmp gword ptr [rbp-0x28], 0
- je SHORT G_M7504_IG38
- mov rdi, gword ptr [rbp-0x28]
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M7504_IG22:
+ cmp gword ptr [rbp-0x20], 0
+ je SHORT G_M7504_IG23
+ mov rdi, gword ptr [rbp-0x20]
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
;; size=24 bbWeight=0 PerfScore 0.00
-G_M7504_IG38:
+G_M7504_IG23:
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M7504_IG39:
- add rsp, 16
+G_M7504_IG24:
+ add rsp, 8
pop rbx
- pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1066, prolog size 24, PerfScore 276.12, instruction count 244, allocated bytes for code 1066 (MethodHash=4c35e2af) for method System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this (FullOpts)
+; Total bytes of code 644, prolog size 22, PerfScore 246.88, instruction count 162, allocated bytes for code 644 (MethodHash=4c35e2af) for method System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this (FullOpts)
; ============================================================ -227 (-94.58 % of base) - System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this ; Assembly listing for method System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
-; partially interruptible
+; rsp based frame
+; fully interruptible
; No PGO data
-; 0 inlinees with PGO data; 7 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 3.50) ref -> rbx this class-hnd single-def <System.Net.Http.Headers.HttpHeaders>
+; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Net.Http.Headers.HttpHeaders>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
-; V02 tmp1 [V02,T04] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
-; V03 tmp2 [V03,T02] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24>
-; V04 tmp3 [V04,T05] ( 3, 1.50) ref -> rax class-hnd exact "Inline return value spill temp" <System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
-; V05 tmp4 [V05,T03] ( 3, 3 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
-;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
-; V07 tmp6 [V07,T06] ( 3, 1.50) int -> r15 "Inline stloc first use temp"
-; V08 tmp7 [V08,T01] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M54155_IG01:
- push rbp
- push r15
- push r14
- push rbx
- push rax
- lea rbp, [rsp+0x20]
- mov rbx, rdi
- ;; size=15 bbWeight=1 PerfScore 5.75
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M54155_IG02:
- cmp dword ptr [rbx+0x10], 0
- jne SHORT G_M54155_IG08
- ;; size=6 bbWeight=1 PerfScore 4.00
+ mov rax, 0xD1FFAB1E ; code for System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
+ ;; size=10 bbWeight=1 PerfScore 0.25
G_M54155_IG03:
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je G_M54155_IG10
- ;; size=19 bbWeight=0.50 PerfScore 2.12
-G_M54155_IG04:
- mov rdi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Value
- mov rbx, gword ptr [rdi]
- mov r15d, dword ptr [rbx+0x08]
- test r15d, r15d
- je SHORT G_M54155_IG05
- mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
- call CORINFO_HELP_NEWSFAST
- mov r14, rax
- mov dword ptr [r14+0x08], -1
- mov dword ptr [r14+0x0C], r15d
- lea rdi, bword ptr [r14+0x10]
- mov rsi, rbx
- call CORINFO_HELP_ASSIGN_REF
- mov rax, r14
- jmp SHORT G_M54155_IG07
- ;; size=69 bbWeight=0.50 PerfScore 6.50
-G_M54155_IG05:
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je SHORT G_M54155_IG11
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M54155_IG06:
- mov rdi, 0xD1FFAB1E ; data for System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Empty
- mov rax, gword ptr [rdi]
- ;; size=13 bbWeight=0.50 PerfScore 1.12
-G_M54155_IG07:
- jmp SHORT G_M54155_IG09
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M54155_IG08:
- mov rdi, 0xD1FFAB1E ; System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24
- call CORINFO_HELP_NEWSFAST
- mov r15, rax
- xor edi, edi
- mov dword ptr [r15+0x18], edi
- lea rdi, bword ptr [r15+0x08]
- mov rsi, rbx
- call CORINFO_HELP_ASSIGN_REF
- mov rax, r15
- ;; size=39 bbWeight=0.50 PerfScore 2.38
-G_M54155_IG09:
- add rsp, 8
- pop rbx
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=11 bbWeight=1 PerfScore 3.25
-G_M54155_IG10:
- mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
- call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M54155_IG04
- ;; size=27 bbWeight=0 PerfScore 0.00
-G_M54155_IG11:
- mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
- call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
- jmp SHORT G_M54155_IG06
- ;; size=24 bbWeight=0 PerfScore 0.00
+ tail.jmp [rax]System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
+ ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 240, prolog size 12, PerfScore 28.25, instruction count 56, allocated bytes for code 240 (MethodHash=e0352c74) for method System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
+; Total bytes of code 13, prolog size 0, PerfScore 2.25, instruction count 2, allocated bytes for code 13 (MethodHash=e0352c74) for method System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
; ============================================================ -151 (-50.33 % of base) - System.IO.Packaging.PackagePartCollection:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackagePart]:this ; Assembly listing for method System.IO.Packaging.PackagePartCollection:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackagePart]:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
-; partially interruptible
+; fully interruptible
; No PGO data
-; 0 inlinees with PGO data; 11 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.IO.Packaging.PackagePartCollection>
+; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.IO.Packaging.PackagePartCollection>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
; V02 tmp1 [V02,T00] ( 4, 6 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Collections.Generic.SortedList`2[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Collections.Generic.SortedList`2+ValueList[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]>
-; V04 tmp3 [V04,T06] ( 2, 4 ) ref -> r15 class-hnd exact single-def "dup spill" <System.Collections.Generic.SortedList`2+ValueList[System.__Canon,System.__Canon]>
-; V05 tmp4 [V05,T03] ( 5, 4 ) ref -> r15
-; V06 tmp5 [V06,T04] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.SortedList`2+ValueList[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]>
+; V04 tmp3 [V04,T04] ( 2, 4 ) ref -> rax class-hnd exact single-def "dup spill" <System.Collections.Generic.SortedList`2+ValueList[System.__Canon,System.__Canon]>
+; V05 tmp4 [V05,T05] ( 4, 3.50) ref -> rax
+; V06 tmp5 [V06,T02] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.SortedList`2+ValueList[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]>
;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Generic.SortedList`2+ValueList[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]>
-; V08 tmp7 [V08,T09] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackagePart]>
-; V09 tmp8 [V09,T05] ( 4, 4 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.SortedList`2+SortedListValueEnumerator[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]>
+;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackagePart]>
+; V09 tmp8 [V09,T03] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.SortedList`2+SortedListValueEnumerator[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]>
;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Collections.Generic.SortedList`2+SortedListValueEnumerator[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]>
-; V11 tmp10 [V11,T07] ( 3, 3 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Collections.Generic.SortedList`2[System.__Canon,System.__Canon]>
-; V12 tmp11 [V12,T10] ( 3, 1.50) ref -> rax class-hnd exact "Inline return value spill temp" <System.SZGenericArrayEnumerator`1[System.IO.Packaging.PackagePart]>
-; V13 tmp12 [V13,T08] ( 3, 3 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.IO.Packaging.PackagePart[]>
-;* V14 tmp13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.IO.Packaging.PackagePart[]>
-; V15 tmp14 [V15,T11] ( 3, 1.50) int -> rbx "Inline stloc first use temp"
-; V16 tmp15 [V16,T01] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.IO.Packaging.PackagePart]>
+; V11 tmp10 [V11,T06] ( 3, 3 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Collections.Generic.SortedList`2[System.__Canon,System.__Canon]>
+; V12 cse0 [V12,T07] ( 3, 2.50) ref -> rbx "CSE #01: aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M63846_IG01:
push rbp
push r15
- push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
- ;; size=12 bbWeight=1 PerfScore 5.50
+ lea rbp, [rsp+0x10]
+ ;; size=9 bbWeight=1 PerfScore 3.50
G_M63846_IG02:
mov rbx, gword ptr [rdi+0x08]
- mov r15, gword ptr [rbx+0x28]
- test r15, r15
+ mov rax, gword ptr [rbx+0x28]
+ test rax, rax
jne SHORT G_M63846_IG04
;; size=13 bbWeight=1 PerfScore 5.25
G_M63846_IG03:
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.SortedList`2+ValueList[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]
call CORINFO_HELP_NEWSFAST
mov r15, rax
lea rdi, bword ptr [r15+0x08]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [rbx+0x28]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
- ;; size=42 bbWeight=0.50 PerfScore 2.50
+ mov rax, r15
+ ;; size=45 bbWeight=0.50 PerfScore 2.62
G_M63846_IG04:
- mov rdi, gword ptr [r15+0x08]
- cmp dword ptr [rdi+0x30], 0
- jne SHORT G_M63846_IG10
+ mov rbx, gword ptr [rax+0x08]
+ cmp dword ptr [rbx+0x30], 0
+ jne SHORT G_M63846_IG07
;; size=10 bbWeight=1 PerfScore 6.00
G_M63846_IG05:
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je G_M63846_IG12
- ;; size=19 bbWeight=0.50 PerfScore 2.12
+ mov rdi, 0xD1FFAB1E ; System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.IO.Packaging.PackagePart]():System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackagePart]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]
+ ;; size=20 bbWeight=0.50 PerfScore 0.25
G_M63846_IG06:
- mov rdi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[System.IO.Packaging.PackagePart]:Value
- mov r15, gword ptr [rdi]
- mov ebx, dword ptr [r15+0x08]
- test ebx, ebx
- je SHORT G_M63846_IG07
- mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[System.IO.Packaging.PackagePart]
- call CORINFO_HELP_NEWSFAST
- mov r14, rax
- mov dword ptr [r14+0x08], -1
- mov dword ptr [r14+0x0C], ebx
- lea rdi, bword ptr [r14+0x10]
- mov rsi, r15
- call CORINFO_HELP_ASSIGN_REF
- mov rax, r14
- jmp SHORT G_M63846_IG09
- ;; size=68 bbWeight=0.50 PerfScore 6.50
+ pop rbx
+ pop r15
+ pop rbp
+ tail.jmp [rax]System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]
+ ;; size=7 bbWeight=0.50 PerfScore 1.75
G_M63846_IG07:
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je SHORT G_M63846_IG13
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M63846_IG08:
- mov rdi, 0xD1FFAB1E ; data for System.SZGenericArrayEnumerator`1[System.IO.Packaging.PackagePart]:Empty
- mov rax, gword ptr [rdi]
- ;; size=13 bbWeight=0.50 PerfScore 1.12
-G_M63846_IG09:
- jmp SHORT G_M63846_IG11
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M63846_IG10:
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.SortedList`2+SortedListValueEnumerator[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]
call CORINFO_HELP_NEWSFAST
- mov rbx, rax
- mov r15, gword ptr [r15+0x08]
- lea rdi, bword ptr [rbx+0x08]
- mov rsi, r15
+ mov r15, rax
+ lea rdi, bword ptr [r15+0x08]
+ mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
- mov eax, dword ptr [r15+0x34]
- mov dword ptr [rbx+0x1C], eax
- mov rax, rbx
- ;; size=44 bbWeight=0.50 PerfScore 4.25
-G_M63846_IG11:
- add rsp, 8
+ mov eax, dword ptr [rbx+0x34]
+ mov dword ptr [r15+0x1C], eax
+ mov rax, r15
+ ;; size=40 bbWeight=0.50 PerfScore 3.25
+G_M63846_IG08:
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.25
-G_M63846_IG12:
- mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.IO.Packaging.PackagePart]
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
- call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M63846_IG06
- ;; size=27 bbWeight=0 PerfScore 0.00
-G_M63846_IG13:
- mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[System.IO.Packaging.PackagePart]
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
- call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
- jmp SHORT G_M63846_IG08
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 300, prolog size 12, PerfScore 39.62, instruction count 70, allocated bytes for code 300 (MethodHash=a18b0699) for method System.IO.Packaging.PackagePartCollection:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackagePart]:this (FullOpts)
+; Total bytes of code 149, prolog size 9, PerfScore 23.88, instruction count 40, allocated bytes for code 149 (MethodHash=a18b0699) for method System.IO.Packaging.PackagePartCollection:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackagePart]:this (FullOpts)
; ============================================================ -97 (-33.92 % of base) - System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this ; Assembly listing for method System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 4 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 5, 4.50) ref -> r14 this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
-; V01 arg1 [V01,T00] ( 7, 6 ) int -> rbx single-def
+; V00 this [V00,T00] ( 6, 5.50) ref -> rbx this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+; V01 arg1 [V01,T02] ( 5, 4.50) int -> r14 single-def
; V02 arg2 [V02,T01] ( 6, 5 ) int -> r15
-; V03 loc0 [V03,T03] ( 8, 6 ) int -> r15
-; V04 loc1 [V04,T10] ( 3, 1.50) ref -> r14 class-hnd exact single-def <System.Linq.Expressions.Expression[]>
+; V03 loc0 [V03,T03] ( 5, 4 ) int -> r15
+; V04 loc1 [V04,T05] ( 3, 1.50) ref -> r13 class-hnd exact single-def <System.Linq.Expressions.Expression[]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewArr temp" <System.Linq.Expressions.Expression[]>
-; V07 tmp2 [V07,T06] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-; V08 tmp3 [V08,T05] ( 3, 5 ) int -> r14 ld-addr-op "Inlining Arg"
-;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp5 [V10,T07] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V11 tmp6 [V11,T08] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V12 tmp7 [V12,T09] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V13 cse0 [V13,T04] ( 7, 5 ) ref -> r13 multi-def "CSE #01: aggressive"
+; V07 cse0 [V07,T04] ( 4, 3 ) ref -> rbx "CSE #02: aggressive"
;
; Lcl frame size = 0
G_M14820_IG01:
push rbp
push r15
push r14
push r13
push rbx
lea rbp, [rsp+0x20]
- mov r14, rdi
- mov ebx, esi
+ mov rbx, rdi
+ mov r14d, esi
mov r15d, edx
- ;; size=21 bbWeight=1 PerfScore 6.25
+ ;; size=22 bbWeight=1 PerfScore 6.25
G_M14820_IG02:
- mov rdi, r14
+ mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
test r15d, r15d
jge SHORT G_M14820_IG04
;; size=20 bbWeight=1 PerfScore 4.75
G_M14820_IG03:
- mov r13, gword ptr [r14+0x10]
- add r15d, dword ptr [r13+0x08]
+ mov rsi, gword ptr [rbx+0x10]
+ add r15d, dword ptr [rsi+0x08]
;; size=8 bbWeight=0.50 PerfScore 2.50
G_M14820_IG04:
- sub r15d, ebx
+ sub r15d, r14d
inc r15d
- mov r13, gword ptr [r14+0x10]
- mov rsi, r13
- test r15d, r15d
- jl G_M14820_IG11
- test ebx, ebx
- jl G_M14820_IG10
- mov r14d, dword ptr [rsi+0x08]
- sub r14d, ebx
- cmp r14d, r15d
- jl SHORT G_M14820_IG09
- cmp dword ptr [r13+0x08], r15d
+ mov rsi, gword ptr [rbx+0x10]
+ mov ecx, r15d
+ mov edx, r14d
+ mov rdi, 0xD1FFAB1E ; System.Dynamic.Utils.ContractUtils:RequiresArrayRange[System.Linq.Expressions.Expression](System.Collections.Generic.IList`1[System.Linq.Expressions.Expression],int,int,System.String,System.String)
+ mov r8, 0xD1FFAB1E ; 'first'
+ mov r9, 0xD1FFAB1E ; 'last'
+ mov rax, 0xD1FFAB1E ; code for System.Dynamic.Utils.ContractUtils:RequiresArrayRange[System.__Canon](System.Collections.Generic.IList`1[System.__Canon],int,int,System.String,System.String)
+ call [rax]System.Dynamic.Utils.ContractUtils:RequiresArrayRange[System.__Canon](System.Collections.Generic.IList`1[System.__Canon],int,int,System.String,System.String)
+ mov rbx, gword ptr [rbx+0x10]
+ cmp dword ptr [rbx+0x08], r15d
je SHORT G_M14820_IG07
- ;; size=48 bbWeight=1 PerfScore 12.75
+ ;; size=68 bbWeight=1 PerfScore 13.00
G_M14820_IG05:
- mov esi, r15d
+ movsxd rsi, r15d
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
- mov r14, rax
- mov rdi, r13
- mov esi, ebx
- mov rdx, r14
+ mov r13, rax
+ mov rdi, rbx
+ mov esi, r14d
+ mov rdx, r13
mov r8d, r15d
xor ecx, ecx
mov rax, 0xD1FFAB1E ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
call [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
- mov rax, r14
- ;; size=49 bbWeight=0.50 PerfScore 3.25
+ mov rax, r13
+ ;; size=50 bbWeight=0.50 PerfScore 3.25
G_M14820_IG06:
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=9 bbWeight=0.50 PerfScore 1.75
G_M14820_IG07:
- mov rax, r13
+ mov rax, rbx
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M14820_IG08:
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=9 bbWeight=0.50 PerfScore 1.75
-G_M14820_IG09:
- mov edi, 0x47FD
- mov rsi, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- mov rdx, rax
- mov esi, r15d
- mov edi, r14d
- mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
- call [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
- int3
- ;; size=42 bbWeight=0.50 PerfScore 2.88
-G_M14820_IG10:
- mov edi, 0x47FD
- mov rsi, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- mov rsi, rax
- mov edi, ebx
- mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
- call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
- int3
- ;; size=38 bbWeight=0.50 PerfScore 2.75
-G_M14820_IG11:
- mov edi, 0x4809
- 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.50 PerfScore 2.75
-; Total bytes of code 286, prolog size 13, PerfScore 41.50, instruction count 80, allocated bytes for code 286 (MethodHash=8d08c61b) for method System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts)
+; Total bytes of code 189, prolog size 13, PerfScore 33.38, instruction count 54, allocated bytes for code 189 (MethodHash=8d08c61b) for method System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/3f83932f9c41554228b1b684dc522792 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 16 minutes 42 seconds (remote runner delay: 1 minute 16 seconds).
dotnet/runtime#112353
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: