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] [AndyAyersMS] JIT: enable devirtualization/inlining of other array interface methods #763
Comments
Top method regressions208 (25.27 % 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 AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
-; 0 inlinees with PGO data; 21 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 27 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T03] ( 12, 15 ) ref -> rbx this class-hnd single-def <System.Net.HttpWebResponse>
-; 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]]]>
+; 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]]]>
;* 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"
-; V05 tmp1 [V05,T10] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Net.WebHeaderCollection>
+; V05 tmp1 [V05,T12] ( 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,T16] ( 2, 2 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.StringComparer>
+; V13 tmp9 [V13,T20] ( 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,T15] ( 5, 2.50) ref -> rsi
-; V16 tmp12 [V16,T17] ( 3, 1.50) 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]]]>
-; V17 tmp13 [V17,T13] ( 3, 3 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.Net.Http.Headers.HttpResponseHeaders>
-; V18 tmp14 [V18,T11] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24>
-;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V21 tmp17 [V21,T18] ( 3, 1.50) 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]]]>
-; V22 tmp18 [V22,T14] ( 3, 3 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.Net.Http.Headers.HttpContentHeaders>
-; V23 tmp19 [V23,T12] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24>
+; 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 "Inline return value spill temp" <System.Collections.Generic.IEnumerator`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,T06] ( 2, 8 ) ref -> r15 "field V02.key (fldOffset=0x0)" P-INDEP
-; V27 tmp23 [V27,T07] ( 2, 8 ) ref -> rsi "field V02.value (fldOffset=0x8)" P-INDEP
-; V28 tmp24 [V28,T08] ( 2, 8 ) ref -> r15 "field V03.key (fldOffset=0x0)" P-INDEP
-; V29 tmp25 [V29,T09] ( 2, 8 ) ref -> rsi "field V03.value (fldOffset=0x8)" P-INDEP
-;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref "field V06.key (fldOffset=0x0)" P-DEP
-;* V31 tmp27 [V31 ] ( 0, 0 ) ref -> zero-ref "field V06.value (fldOffset=0x8)" P-DEP
-;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref "field V09.key (fldOffset=0x0)" P-DEP
-;* V33 tmp29 [V33 ] ( 0, 0 ) ref -> zero-ref "field V09.value (fldOffset=0x8)" P-DEP
-; V34 tmp30 [V34,T04] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V35 tmp31 [V35,T00] ( 3, 24 ) ref -> r14 "argument with side effect"
-; V36 tmp32 [V36,T05] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V37 tmp33 [V37,T01] ( 3, 24 ) ref -> r14 "argument with side effect"
-; V38 PSPSym [V38,T20] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
-; V39 cse0 [V39,T19] ( 3, 1.50) ref -> rdi "CSE #05: moderate"
+; 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 "Inline return value spill temp" <System.Collections.Generic.IEnumerator`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 PSPSym [V48,T28] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
+; V49 cse0 [V49,T25] ( 3, 1.50) ref -> rdi "CSE #05: moderate"
;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M7504_IG01:
push rbp
push r15
push r14
+ push r13
push rbx
- sub rsp, 24
+ sub rsp, 16
lea rbp, [rsp+0x30]
mov qword ptr [rbp-0x30], rsp
mov rbx, rdi
- ;; size=22 bbWeight=1 PerfScore 6.00
+ ;; size=24 bbWeight=1 PerfScore 7.00
G_M7504_IG02:
cmp gword ptr [rbx+0x08], 0
- je G_M7504_IG24
+ je G_M7504_IG31
cmp gword ptr [rbx+0x20], 0
- jne G_M7504_IG19
+ jne G_M7504_IG24
;; 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_IG21
+ je G_M7504_IG26
;; 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 r14, rax
+ mov r13, rax
xor edi, edi
- mov dword ptr [r14+0x18], edi
- lea rdi, bword ptr [r14+0x08]
+ mov dword ptr [r13+0x18], edi
+ lea rdi, bword ptr [r13+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
- mov rax, r14
- jmp SHORT G_M7504_IG07
- ;; size=128 bbWeight=0.50 PerfScore 14.50
+ jmp SHORT G_M7504_IG09
+ ;; size=125 bbWeight=0.50 PerfScore 14.38
G_M7504_IG05:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M7504_IG22
+ je G_M7504_IG27
;; 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 rdi, gword ptr [rdi]
- cmp dword ptr [rdi], edi
- call System.SZArrayHelper:GetEnumerator[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
- ;; size=20 bbWeight=0.50 PerfScore 3.12
+ 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 gword ptr [rbp-0x20], rax
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M7504_IG28
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
G_M7504_IG08:
- jmp SHORT G_M7504_IG10
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ 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 rdi, gword ptr [rbp-0x20]
+ mov gword ptr [rbp-0x28], r13
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M7504_IG10:
+ jmp SHORT G_M7504_IG12
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M7504_IG11:
+ mov rdi, gword ptr [rbp-0x28]
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_IG10:
- mov rdi, gword ptr [rbp-0x20]
+G_M7504_IG12:
+ mov rdi, gword ptr [rbp-0x28]
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_IG09
+ jne SHORT G_M7504_IG11
;; size=21 bbWeight=4 PerfScore 22.00
-G_M7504_IG11:
- mov rdi, gword ptr [rbp-0x20]
+G_M7504_IG13:
+ mov rdi, gword ptr [rbp-0x28]
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_IG19
+ je G_M7504_IG24
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_IG13
+ jne SHORT G_M7504_IG18
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M7504_IG23
+ je G_M7504_IG29
;; size=108 bbWeight=0.50 PerfScore 18.50
-G_M7504_IG12:
+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 rdi, gword ptr [rdi]
- cmp dword ptr [rdi], edi
- call System.SZArrayHelper:GetEnumerator[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
- jmp SHORT G_M7504_IG14
- ;; size=22 bbWeight=0.50 PerfScore 4.12
-G_M7504_IG13:
- mov rdi, 0xD1FFAB1E ; System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24
+ 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 r14, rax
- xor edi, edi
- mov dword ptr [r14+0x18], edi
- lea rdi, bword ptr [r14+0x08]
+ 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
- mov rax, r14
- ;; size=39 bbWeight=0.50 PerfScore 2.38
-G_M7504_IG14:
- mov gword ptr [rbp-0x20], rax
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M7504_IG15:
jmp SHORT G_M7504_IG17
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=66 bbWeight=0.50 PerfScore 6.38
+G_M7504_IG15:
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M7504_IG30
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
G_M7504_IG16:
- mov rdi, gword ptr [rbp-0x20]
+ 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
+ ;; 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]
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_IG17:
- mov rdi, gword ptr [rbp-0x20]
+G_M7504_IG22:
+ mov rdi, gword ptr [rbp-0x28]
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_IG16
+ jne SHORT G_M7504_IG21
;; size=21 bbWeight=4 PerfScore 22.00
-G_M7504_IG18:
- mov rdi, gword ptr [rbp-0x20]
+G_M7504_IG23:
+ mov rdi, gword ptr [rbp-0x28]
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_IG19:
+G_M7504_IG24:
mov rax, gword ptr [rbx+0x20]
;; size=4 bbWeight=1 PerfScore 2.00
-G_M7504_IG20:
- add rsp, 24
+G_M7504_IG25:
+ add rsp, 16
pop rbx
+ pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.25
-G_M7504_IG21:
+ ;; size=13 bbWeight=1 PerfScore 3.75
+G_M7504_IG26:
mov rdi, 0xD1FFAB1E ; System.Collections.Specialized.NameObjectCollectionBase
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M7504_IG04
;; size=20 bbWeight=0 PerfScore 0.00
-G_M7504_IG22:
+G_M7504_IG27:
mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M7504_IG06
;; size=20 bbWeight=0 PerfScore 0.00
-G_M7504_IG23:
+G_M7504_IG28:
+ mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
+ call CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M7504_IG08
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M7504_IG29:
mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M7504_IG12
+ jmp G_M7504_IG14
;; size=20 bbWeight=0 PerfScore 0.00
-G_M7504_IG24:
+G_M7504_IG30:
+ mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
+ call CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M7504_IG16
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M7504_IG31:
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 PerfScore 0.00
-G_M7504_IG25:
- push rbp
- push r15
- push r14
- push rbx
- push rax
- mov rbp, qword ptr [rdi]
- mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x30]
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M7504_IG26:
- cmp gword ptr [rbp-0x20], 0
- je SHORT G_M7504_IG27
- 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_IG27:
- nop
- ;; size=1 bbWeight=0 PerfScore 0.00
-G_M7504_IG28:
- add rsp, 8
- pop rbx
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M7504_IG29:
- push rbp
- push r15
- push r14
- push rbx
- push rax
- mov rbp, qword ptr [rdi]
- mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x30]
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M7504_IG30:
- cmp gword ptr [rbp-0x20], 0
- je SHORT G_M7504_IG31
- 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_IG31:
- nop
- ;; size=1 bbWeight=0 PerfScore 0.00
G_M7504_IG32:
- add rsp, 8
+ push rbp
+ push r15
+ push r14
+ push r13
+ push rbx
+ sub rsp, 16
+ 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]
+ 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:
+ nop
+ ;; size=1 bbWeight=0 PerfScore 0.00
+G_M7504_IG35:
+ add rsp, 16
pop rbx
+ pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0 PerfScore 0.00
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M7504_IG36:
+ push rbp
+ push r15
+ push r14
+ push r13
+ push rbx
+ sub rsp, 16
+ 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]
+ 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:
+ nop
+ ;; size=1 bbWeight=0 PerfScore 0.00
+G_M7504_IG39:
+ add rsp, 16
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 823, prolog size 22, PerfScore 260.00, instruction count 199, allocated bytes for code 823 (MethodHash=4c35e2af) for method System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this (FullOpts)
+; Total bytes of code 1031, prolog size 24, PerfScore 274.25, instruction count 239, allocated bytes for code 1031 (MethodHash=4c35e2af) for method System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this (FullOpts)
; ============================================================ 119 (99.17 % of base) - 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 ; Assembly listing for method 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 (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 7 single block inlinees; 1 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>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24>
+; V02 tmp1 [V02,T02] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24>
+; V03 tmp2 [V03,T04] ( 3, 1.50) 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]]]>
+; V04 tmp3 [V04,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]][]>
+;* V05 tmp4 [V05 ] ( 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]][]>
+; V06 tmp5 [V06,T05] ( 3, 1.50) int -> r15 "Inline stloc first use temp"
+; V07 tmp6 [V07,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 = 0
+; Lcl frame size = 8
G_M54964_IG01:
push rbp
push r15
+ push r14
push rbx
- lea rbp, [rsp+0x10]
+ push rax
+ lea rbp, [rsp+0x20]
mov rbx, rdi
- ;; size=12 bbWeight=1 PerfScore 3.75
+ ;; size=15 bbWeight=1 PerfScore 5.75
G_M54964_IG02:
cmp dword ptr [rbx+0x10], 0
- jne SHORT G_M54964_IG06
- ;; size=6 bbWeight=1 PerfScore 4.00
+ jne G_M54964_IG08
+ ;; size=10 bbWeight=1 PerfScore 4.00
G_M54964_IG03:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je SHORT G_M54964_IG08
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ je G_M54964_IG10
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
G_M54964_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 rdi, gword ptr [rdi]
- cmp dword ptr [rdi], edi
- call System.SZArrayHelper:GetEnumerator[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
- nop
- ;; size=21 bbWeight=0.50 PerfScore 3.25
+ mov rbx, gword ptr [rdi]
+ mov r15d, dword ptr [rbx+0x08]
+ test r15d, r15d
+ je SHORT G_M54964_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_M54964_IG07
+ ;; size=69 bbWeight=0.50 PerfScore 6.50
G_M54964_IG05:
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je SHORT G_M54964_IG11
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M54964_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_M54964_IG07:
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M54964_IG06:
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
+G_M54964_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_M54964_IG07:
+G_M54964_IG09:
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M54964_IG08:
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
+G_M54964_IG10:
mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp SHORT G_M54964_IG04
+ jmp G_M54964_IG04
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M54964_IG11:
+ mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
+ call CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp SHORT G_M54964_IG06
;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 9, PerfScore 18.00, instruction count 35, allocated bytes for code 120 (MethodHash=c841294b) for method 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 (FullOpts)
+; Total bytes of code 239, prolog size 12, PerfScore 27.25, instruction count 59, allocated bytes for code 239 (MethodHash=c841294b) for method 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 (FullOpts)
; ============================================================ 110 (94.83 % 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 AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 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>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 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,T01] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24>
+; 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 "Inline return value spill temp" <System.Collections.Generic.IEnumerator`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 = 0
+; Lcl frame size = 8
G_M54155_IG01:
push rbp
push r15
+ push r14
push rbx
- lea rbp, [rsp+0x10]
+ push rax
+ lea rbp, [rsp+0x20]
mov rbx, rdi
- ;; size=12 bbWeight=1 PerfScore 3.75
+ ;; size=15 bbWeight=1 PerfScore 5.75
G_M54155_IG02:
cmp dword ptr [rbx+0x10], 0
- jne SHORT G_M54155_IG05
+ jne SHORT G_M54155_IG08
;; size=6 bbWeight=1 PerfScore 4.00
G_M54155_IG03:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je SHORT G_M54155_IG07
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ 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 rdi, gword ptr [rdi]
- cmp dword ptr [rdi], edi
- call System.SZArrayHelper:GetEnumerator[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
- jmp SHORT G_M54155_IG06
- ;; size=22 bbWeight=0.50 PerfScore 4.12
+ 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_IG06:
+G_M54155_IG09:
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
-G_M54155_IG07:
+ ;; 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]]]
call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp SHORT G_M54155_IG04
+ jmp G_M54155_IG04
+ ;; size=20 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]]]
+ call CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp SHORT G_M54155_IG06
;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 116, prolog size 9, PerfScore 18.88, instruction count 31, allocated bytes for code 116 (MethodHash=e0352c74) for method System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
+; Total bytes of code 226, prolog size 12, PerfScore 28.25, instruction count 54, allocated bytes for code 226 (MethodHash=e0352c74) for method System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
; ============================================================ 56 (29.47 % of base) - System.Composition.Convention.ImportConventionBuilder:IsSupportedImportManyType(System.Reflection.TypeInfo):ubyte ; Assembly listing for method System.Composition.Convention.ImportConventionBuilder:IsSupportedImportManyType(System.Reflection.TypeInfo):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 8, 6 ) ref -> rbx class-hnd single-def <System.Reflection.TypeInfo>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T07] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V03 tmp2 [V03,T03] ( 2, 2 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Type[]>
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Type[]>
-; V05 tmp4 [V05,T04] ( 2, 2 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Type>
+; V05 tmp4 [V05,T04] ( 2, 2 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.Type>
;* V06 tmp5 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V07 tmp6 [V07,T05] ( 2, 2 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Type[]>
-;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Type[]>
-; V09 tmp8 [V09,T06] ( 2, 2 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Type>
-; V10 tmp9 [V10,T02] ( 3, 3 ) ref -> rax single-def "argument with side effect"
-; V11 cse0 [V11,T01] ( 6, 4 ) long -> r15 "CSE #01: aggressive"
+;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Type[]>
+; V08 tmp7 [V08,T07] ( 2, 1 ) ubyte -> rax single-def "Inline return value spill temp"
+; V09 tmp8 [V09,T05] ( 2, 2 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Type[]>
+;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Type[]>
+; V11 tmp10 [V11,T06] ( 2, 2 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.Type>
+;* V12 tmp11 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V13 tmp12 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Type[]>
+; V14 tmp13 [V14,T02] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V15 cse0 [V15,T01] ( 6, 4 ) long -> r15 "CSE #01: aggressive"
;
; Lcl frame size = 8
G_M48661_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
G_M48661_IG02:
mov rdi, rbx
mov r15, qword ptr [rbx]
mov rax, qword ptr [r15+0x58]
call [rax+0x10]System.Type:IsArrayImpl():ubyte:this
test eax, eax
jne SHORT G_M48661_IG04
;; size=17 bbWeight=1 PerfScore 8.50
G_M48661_IG03:
mov rdi, rbx
mov rax, qword ptr [r15+0x60]
call [rax+0x10]System.Type:get_IsGenericTypeDefinition():ubyte:this
test eax, eax
je SHORT G_M48661_IG06
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
mov rdi, rbx
mov rax, qword ptr [r15+0xB0]
call [rax+0x30]System.Reflection.TypeInfo:AsType():System.Type:this
- mov rsi, rax
- mov rdi, r14
- call System.SZArrayHelper:Contains[System.Object](System.Object):ubyte:this
+ mov rdx, rax
+ mov r8d, 3
+ mov rsi, r14
+ mov rdi, 0xD1FFAB1E ; System.Array:IndexOf[System.Object](System.Object[],System.Object,int,int):int
+ xor ecx, ecx
+ mov rax, 0xD1FFAB1E ; code for System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int
+ call [rax]System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int
test eax, eax
- je SHORT G_M48661_IG06
- ;; size=55 bbWeight=0.50 PerfScore 8.38
+ jl SHORT G_M48661_IG06
+ ;; size=80 bbWeight=0.50 PerfScore 9.88
G_M48661_IG04:
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M48661_IG05:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=0.50 PerfScore 1.62
G_M48661_IG06:
mov rdi, rbx
mov rax, qword ptr [r15+0xB0]
call [rax+0x30]System.Reflection.TypeInfo:AsType():System.Type:this
mov rdi, rax
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x58]
call [rax+0x28]System.Type:get_IsConstructedGenericType():ubyte:this
test eax, eax
jne SHORT G_M48661_IG08
xor eax, eax
;; size=32 bbWeight=0.50 PerfScore 7.00
G_M48661_IG07:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=0.50 PerfScore 1.62
G_M48661_IG08:
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
mov rdi, rbx
mov rax, qword ptr [r15+0x68]
call [rax+0x18]System.Type:GetGenericTypeDefinition():System.Type:this
- mov rsi, rax
- mov rdi, r14
- ;; size=29 bbWeight=0.50 PerfScore 4.00
+ mov rdx, rax
+ mov r8d, 3
+ mov rsi, r14
+ mov rdi, 0xD1FFAB1E ; System.Array:IndexOf[System.Object](System.Object[],System.Object,int,int):int
+ xor ecx, ecx
+ mov rax, 0xD1FFAB1E ; code for System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int
+ call [rax]System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int
+ not eax
+ shr eax, 31
+ ;; size=64 bbWeight=0.50 PerfScore 6.38
G_M48661_IG09:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
- jmp System.SZArrayHelper:Contains[System.Object](System.Object):ubyte:this
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ret
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 190, prolog size 12, PerfScore 39.12, instruction count 64, allocated bytes for code 190 (MethodHash=538f41ea) for method System.Composition.Convention.ImportConventionBuilder:IsSupportedImportManyType(System.Reflection.TypeInfo):ubyte (FullOpts)
+; Total bytes of code 246, prolog size 12, PerfScore 42.50, instruction count 75, allocated bytes for code 246 (MethodHash=538f41ea) for method System.Composition.Convention.ImportConventionBuilder:IsSupportedImportManyType(System.Reflection.TypeInfo):ubyte (FullOpts)
; ============================================================ 27 (36.00 % of base) - System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionInterface(System.Type):ubyte ; Assembly listing for method System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionInterface(System.Type):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 8, 6.50) ref -> rbx class-hnd <System.Type>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
+;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V03 tmp2 [V03,T01] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Type[]>
+;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Type[]>
;
; Lcl frame size = 8
G_M25004_IG01:
push rbp
push rbx
push rax
lea rbp, [rsp+0x10]
mov rbx, rdi
;; size=11 bbWeight=1 PerfScore 3.75
G_M25004_IG02:
mov rdi, rbx
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x60]
call [rax+0x08]System.Type:get_IsGenericType():ubyte:this
test eax, eax
je SHORT G_M25004_IG04
;; size=17 bbWeight=1 PerfScore 8.50
G_M25004_IG03:
mov rdi, rbx
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x68]
call [rax+0x18]System.Type:GetGenericTypeDefinition():System.Type:this
mov rbx, rax
;; size=16 bbWeight=0.50 PerfScore 3.75
G_M25004_IG04:
mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.CollectionDataContract+CollectionDataContractCriticalHelper:get_KnownInterfaces():System.Type[]
call [rax]System.Runtime.Serialization.DataContracts.CollectionDataContract+CollectionDataContractCriticalHelper:get_KnownInterfaces():System.Type[]
- mov rdi, rax
- mov rsi, rbx
- cmp dword ptr [rdi], edi
- ;; size=20 bbWeight=1 PerfScore 6.75
+ mov r8d, dword ptr [rax+0x08]
+ mov rsi, rax
+ mov rdx, rbx
+ mov rdi, 0xD1FFAB1E ; System.Array:IndexOf[System.Object](System.Object[],System.Object,int,int):int
+ xor ecx, ecx
+ mov rax, 0xD1FFAB1E ; code for System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int
+ call [rax]System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int
+ not eax
+ shr eax, 31
+ ;; size=51 bbWeight=1 PerfScore 10.25
G_M25004_IG05:
add rsp, 8
pop rbx
pop rbp
- jmp System.SZArrayHelper:Contains[System.Object](System.Object):ubyte:this
- ;; size=11 bbWeight=1 PerfScore 3.25
+ ret
+ ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 75, prolog size 8, PerfScore 26.00, instruction count 25, allocated bytes for code 75 (MethodHash=1a6a9e53) for method System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionInterface(System.Type):ubyte (FullOpts)
+; Total bytes of code 102, prolog size 8, PerfScore 28.50, instruction count 31, allocated bytes for code 102 (MethodHash=1a6a9e53) for method System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionInterface(System.Type):ubyte (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/d07199a341b08ec8bde229fc2db90a9d |
Top method improvements-130 (-37.46 % 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 AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 9 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 6, 4.50) ref -> rbx this class-hnd single-def <System.ComponentModel.Composition.CompositionException>
-; V01 arg1 [V01,T02] ( 3, 2.50) ref -> r15 class-hnd single-def <System.ComponentModel.Composition.CompositionError>
+; 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>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 5, 5 ) ref -> r14 class-hnd exact single-def "dup spill" <System.ComponentModel.Composition.CompositionError[]>
+; V03 tmp1 [V03,T01] ( 4, 8 ) ref -> r14 class-hnd exact single-def "dup spill" <System.ComponentModel.Composition.CompositionError[]>
;* V04 tmp2 [V04,T10] ( 0, 0 ) ref -> zero-ref single-def
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
-; V06 tmp4 [V06,T03] ( 4, 3.50) ref -> r15 single-def
-; V07 tmp5 [V07,T07] ( 2, 2 ) ref -> r15 class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
+; V06 tmp4 [V06,T05] ( 2, 2 ) ref -> r15 single-def
+; V07 tmp5 [V07,T06] ( 2, 2 ) ref -> r15 class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.ComponentModel.Composition.CompositionError]>
;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-; V10 tmp8 [V10,T05] ( 3, 2 ) ref -> r15 class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
-; V11 tmp9 [V11,T09] ( 3, 1.50) int -> rax "Inline stloc first use temp"
-; V12 tmp10 [V12,T08] ( 3, 1.50) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-; V13 tmp11 [V13,T06] ( 3, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
-; V14 tmp12 [V14,T04] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`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,T11] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V12 tmp10 [V12,T04] ( 3, 3 ) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
+;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
+; V14 tmp12 [V14,T08] ( 2, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+; V15 tmp13 [V15,T02] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+; V16 cse0 [V16,T09] ( 2, 2 ) long -> rdi "CSE #02: moderate"
;
; Lcl frame size = 8
G_M19286_IG01:
push rbp
push r15
push r14
push rbx
push rax
lea rbp, [rsp+0x20]
mov rbx, rdi
mov r15, rsi
- ;; size=18 bbWeight=0.50 PerfScore 3.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M19286_IG02:
mov rdi, 0xD1FFAB1E ; System.ComponentModel.Composition.CompositionError[]
mov esi, 1
call CORINFO_HELP_NEWARR_1_OBJ
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=55 bbWeight=0.50 PerfScore 3.00
+ ;; size=55 bbWeight=1 PerfScore 6.00
G_M19286_IG03:
mov gword ptr [rbx+0x20], rsi
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, r14
- call System.SZArrayHelper:get_Count[System.Object]():int:this
- test eax, eax
- jne SHORT G_M19286_IG05
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je G_M19286_IG12
- ;; size=70 bbWeight=0.50 PerfScore 5.88
-G_M19286_IG04:
- mov rsi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[System.ComponentModel.Composition.CompositionError]:Value
- mov r15, gword ptr [rsi]
- jmp SHORT G_M19286_IG06
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M19286_IG05:
- movsxd rsi, eax
+ mov esi, 1
mov rdi, 0xD1FFAB1E ; System.ComponentModel.Composition.CompositionError[]
call CORINFO_HELP_NEWARR_1_OBJ
mov r15, rax
+ mov r8d, 1
mov rdi, r14
- mov rsi, r15
- xor edx, edx
- call System.SZArrayHelper:CopyTo[System.Object](System.Object[],int):this
- ;; size=34 bbWeight=0.50 PerfScore 1.75
-G_M19286_IG06:
- test r15, r15
- je G_M19286_IG14
- cmp dword ptr [r15+0x08], 0
- jne SHORT G_M19286_IG09
- ;; size=16 bbWeight=1 PerfScore 5.25
-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 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)
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=10 bbWeight=1 PerfScore 1.75
-G_M19286_IG11:
+ ;; size=133 bbWeight=1 PerfScore 16.50
+G_M19286_IG04:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.25
-G_M19286_IG12:
- mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.ComponentModel.Composition.CompositionError]
- call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M19286_IG04
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M19286_IG13:
- mov rdi, 0xD1FFAB1E ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
- call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp SHORT G_M19286_IG08
- ;; size=17 bbWeight=0 PerfScore 0.00
-G_M19286_IG14:
- mov edi, 2
- mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
- call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
- int3
- ;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 347, prolog size 12, PerfScore 32.00, instruction count 79, allocated bytes for code 347 (MethodHash=fe8bb4a9) for method System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
+; Total bytes of code 217, prolog size 12, PerfScore 31.75, instruction count 52, allocated bytes for code 217 (MethodHash=fe8bb4a9) for method System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
; ============================================================ -129 (-24.48 % 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 AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 10 single block inlinees; 8 inlinees without PGO data
+; 0 inlinees with PGO data; 12 single block inlinees; 8 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 3.50) ref -> rbx class-hnd single-def <System.ComponentModel.Composition.Primitives.ComposablePart>
-; V01 arg1 [V01,T02] ( 4, 3.50) ref -> r15 class-hnd single-def <System.ComponentModel.Composition.Primitives.ExportDefinition>
-; V02 arg2 [V02,T03] ( 4, 3.50) ref -> r14 class-hnd single-def <System.Exception>
+; 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"
-; V04 tmp1 [V04,T00] ( 6, 8 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.CompositionException>
-; V05 tmp2 [V05,T04] ( 5, 5 ) ref -> r15 class-hnd exact single-def "dup spill" <System.ComponentModel.Composition.CompositionError[]>
-; V06 tmp3 [V06,T09] ( 2, 2 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.ComponentModel.Composition.CompositionError>
+; 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 "dup spill" <System.ComponentModel.Composition.CompositionError[]>
+; V06 tmp3 [V06,T06] ( 2, 4 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.ComponentModel.Composition.CompositionError>
;* V07 tmp4 [V07,T13] ( 0, 0 ) ref -> zero-ref single-def
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
-; V09 tmp6 [V09,T05] ( 4, 3.50) ref -> rbx single-def
-; V10 tmp7 [V10,T10] ( 2, 2 ) ref -> rbx class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
+; V09 tmp6 [V09,T08] ( 2, 2 ) ref -> rbx single-def
+; V10 tmp7 [V10,T09] ( 2, 2 ) ref -> rbx class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.ComponentModel.Composition.CompositionError]>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-; V13 tmp10 [V13,T07] ( 3, 2 ) ref -> rbx class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
-; V14 tmp11 [V14,T12] ( 3, 1.50) int -> rax "Inline stloc first use temp"
-; V15 tmp12 [V15,T11] ( 3, 1.50) ref -> rbx class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-; V16 tmp13 [V16,T08] ( 3, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
-; V17 tmp14 [V17,T06] ( 3, 3 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+; V13 tmp10 [V13,T10] ( 2, 2 ) ref -> rbx class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
+;* V14 tmp11 [V14,T14] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V15 tmp12 [V15,T07] ( 3, 3 ) ref -> rbx class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
+;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
+; V17 tmp14 [V17,T11] ( 2, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+; V18 tmp15 [V18,T05] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+; V19 cse0 [V19,T12] ( 2, 2 ) long -> rdi "CSE #02: moderate"
;
; 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_IG18
+ je G_M65036_IG07
test r15, r15
- je G_M65036_IG17
+ je G_M65036_IG06
test r14, r14
- je G_M65036_IG16
- ;; size=27 bbWeight=1 PerfScore 3.75
-G_M65036_IG03:
+ je G_M65036_IG05
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=97 bbWeight=0.50 PerfScore 5.88
-G_M65036_IG04:
+ ;; 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, r15
- call System.SZArrayHelper:get_Count[System.Object]():int:this
- test eax, eax
- jne SHORT G_M65036_IG06
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je G_M65036_IG13
- ;; size=70 bbWeight=0.50 PerfScore 5.88
-G_M65036_IG05:
- mov rsi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[System.ComponentModel.Composition.CompositionError]:Value
- mov rbx, gword ptr [rsi]
- jmp SHORT G_M65036_IG07
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M65036_IG06:
- movsxd rsi, eax
+ mov esi, 1
mov rdi, 0xD1FFAB1E ; System.ComponentModel.Composition.CompositionError[]
call CORINFO_HELP_NEWARR_1_OBJ
mov rbx, rax
+ mov r8d, 1
mov rdi, r15
- mov rsi, rbx
- xor edx, edx
- call System.SZArrayHelper:CopyTo[System.Object](System.Object[],int):this
- ;; size=34 bbWeight=0.50 PerfScore 1.75
-G_M65036_IG07:
- test rbx, rbx
- je G_M65036_IG15
- cmp dword ptr [rbx+0x08], 0
- jne SHORT G_M65036_IG10
- ;; size=15 bbWeight=1 PerfScore 5.25
-G_M65036_IG08:
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je SHORT G_M65036_IG14
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M65036_IG09:
- 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_IG11
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M65036_IG10:
+ 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)
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_IG11:
lea rdi, bword ptr [r13+0x70]
call CORINFO_HELP_ASSIGN_REF
mov rax, r13
- ;; size=12 bbWeight=1 PerfScore 1.75
-G_M65036_IG12:
+ ;; size=135 bbWeight=1 PerfScore 16.50
+G_M65036_IG04:
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 3.50
-G_M65036_IG13:
- mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.ComponentModel.Composition.CompositionError]
- call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M65036_IG05
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M65036_IG14:
- mov rdi, 0xD1FFAB1E ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
- call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp SHORT G_M65036_IG09
- ;; size=17 bbWeight=0 PerfScore 0.00
-G_M65036_IG15:
- mov edi, 2
- mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
- call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
- int3
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M65036_IG16:
+G_M65036_IG05:
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 PerfScore 0.00
-G_M65036_IG17:
+G_M65036_IG06:
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 PerfScore 0.00
-G_M65036_IG18:
+G_M65036_IG07:
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 PerfScore 0.00
-; Total bytes of code 527, prolog size 13, PerfScore 42.12, instruction count 116, allocated bytes for code 527 (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 398, prolog size 13, PerfScore 41.75, instruction count 89, allocated bytes for code 398 (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)
; ============================================================ -76 (-41.53 % of base) - Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() ; Assembly listing for method Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 5 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 7 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
;* V00 loc0 [V00 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[ubyte]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 3 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.String[]>
+;* V02 tmp1 [V02,T03] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.String[]>
;* V03 tmp2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[ubyte]>
;* V04 tmp3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[ubyte]>
;* V05 tmp4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[ubyte]>
;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[ubyte]>
;* V07 tmp6 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[ubyte]>
;* V08 tmp7 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[ubyte]>
-; V09 tmp8 [V09,T00] ( 11, 21 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <Microsoft.Extensions.DependencyModel.CompilationOptions>
+; V09 tmp8 [V09,T00] ( 11, 22 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Microsoft.Extensions.DependencyModel.CompilationOptions>
;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Nullable`1[ubyte]>
-; V11 tmp10 [V11,T03] ( 2, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.String[]>
+; V11 tmp10 [V11,T01] ( 2, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.String[]>
;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.String]>
;* V13 tmp12 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
-; V14 tmp13 [V14,T02] ( 3, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.String[]>
-; V15 tmp14 [V15,T05] ( 3, 1.50) int -> rax single-def "Inline stloc first use temp"
-; V16 tmp15 [V16,T04] ( 3, 1.50) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
-;* V17 tmp16 [V17 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-;* V18 tmp17 [V18 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V00.value (fldOffset=0x1)" P-INDEP
-;* V19 tmp18 [V19,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.hasValue (fldOffset=0x0)" P-INDEP
-;* V20 tmp19 [V20,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.value (fldOffset=0x1)" P-INDEP
-;* V21 tmp20 [V21,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.hasValue (fldOffset=0x0)" P-INDEP
-;* V22 tmp21 [V22,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.value (fldOffset=0x1)" P-INDEP
-;* V23 tmp22 [V23,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V05.hasValue (fldOffset=0x0)" P-INDEP
-;* V24 tmp23 [V24,T11] ( 0, 0 ) ubyte -> zero-ref single-def "field V05.value (fldOffset=0x1)" P-INDEP
-;* V25 tmp24 [V25,T12] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP
-;* V26 tmp25 [V26,T13] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.value (fldOffset=0x1)" P-INDEP
-;* V27 tmp26 [V27,T14] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
-;* V28 tmp27 [V28,T15] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.value (fldOffset=0x1)" P-INDEP
-;* V29 tmp28 [V29,T16] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
-;* V30 tmp29 [V30,T17] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.value (fldOffset=0x1)" P-INDEP
-;* V31 tmp30 [V31,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V10.hasValue (fldOffset=0x0)" P-INDEP
-;* V32 tmp31 [V32,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V10.value (fldOffset=0x1)" P-INDEP
+; V14 tmp13 [V14,T02] ( 2, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <System.String[]>
+;* V15 tmp14 [V15,T04] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
+;* V16 tmp15 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
+;* V17 tmp16 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
+;* V18 tmp17 [V18 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+;* V19 tmp18 [V19 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V00.value (fldOffset=0x1)" P-INDEP
+;* V20 tmp19 [V20,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.hasValue (fldOffset=0x0)" P-INDEP
+;* V21 tmp20 [V21,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.value (fldOffset=0x1)" P-INDEP
+;* V22 tmp21 [V22,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.hasValue (fldOffset=0x0)" P-INDEP
+;* V23 tmp22 [V23,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.value (fldOffset=0x1)" P-INDEP
+;* V24 tmp23 [V24,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V05.hasValue (fldOffset=0x0)" P-INDEP
+;* V25 tmp24 [V25,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V05.value (fldOffset=0x1)" P-INDEP
+;* V26 tmp25 [V26,T11] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP
+;* V27 tmp26 [V27,T12] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.value (fldOffset=0x1)" P-INDEP
+;* V28 tmp27 [V28,T13] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V29 tmp28 [V29,T14] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.value (fldOffset=0x1)" P-INDEP
+;* V30 tmp29 [V30,T15] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
+;* V31 tmp30 [V31,T16] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.value (fldOffset=0x1)" P-INDEP
+;* V32 tmp31 [V32,T17] ( 0, 0 ) ubyte -> zero-ref single-def "field V10.hasValue (fldOffset=0x0)" P-INDEP
+;* V33 tmp32 [V33,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V10.value (fldOffset=0x1)" P-INDEP
;
; Lcl frame size = 8
G_M20015_IG01:
push rbp
- push r15
- push r14
push rbx
push rax
- lea rbp, [rsp+0x20]
- ;; size=12 bbWeight=0.50 PerfScore 2.75
+ lea rbp, [rsp+0x10]
+ ;; size=8 bbWeight=1 PerfScore 3.50
G_M20015_IG02:
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rbx, gword ptr [rdi]
mov rdi, 0xD1FFAB1E ; Microsoft.Extensions.DependencyModel.CompilationOptions
call CORINFO_HELP_NEWSFAST
- mov r15, rax
- mov rdi, rbx
- call System.SZArrayHelper:get_Count[System.Object]():int:this
- test eax, eax
- jne SHORT G_M20015_IG03
- mov rax, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rax]
- jmp SHORT G_M20015_IG04
- ;; size=58 bbWeight=0.50 PerfScore 5.25
-G_M20015_IG03:
- movsxd rsi, eax
- mov rdi, 0xD1FFAB1E ; System.String[]
- call CORINFO_HELP_NEWARR_1_OBJ
- mov r14, rax
- mov rdi, rbx
- mov rsi, r14
- xor edx, edx
- call System.SZArrayHelper:CopyTo[System.Object](System.Object[],int):this
- mov rsi, r14
- ;; size=37 bbWeight=0.50 PerfScore 1.88
-G_M20015_IG04:
- lea rdi, bword ptr [r15+0x08]
+ mov rbx, rax
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rdi]
+ lea rdi, bword ptr [rbx+0x08]
call CORINFO_HELP_ASSIGN_REF
xor rdi, rdi
- mov gword ptr [r15+0x10], rdi
- ;; size=15 bbWeight=1 PerfScore 2.75
+ mov gword ptr [rbx+0x10], rdi
+ ;; size=46 bbWeight=1 PerfScore 6.50
+G_M20015_IG03:
+ mov gword ptr [rbx+0x18], rdi
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M20015_IG04:
+ mov dword ptr [rbx+0x30], edi
+ mov word ptr [rbx+0x34], 0
+ ;; size=9 bbWeight=1 PerfScore 2.00
G_M20015_IG05:
- mov gword ptr [r15+0x18], rdi
+ mov gword ptr [rbx+0x20], rdi
;; size=4 bbWeight=1 PerfScore 1.00
G_M20015_IG06:
- mov dword ptr [r15+0x30], edi
- mov word ptr [r15+0x34], 0
- ;; size=11 bbWeight=1 PerfScore 2.00
+ mov dword ptr [rbx+0x36], edi
+ ;; size=3 bbWeight=1 PerfScore 1.00
G_M20015_IG07:
- mov gword ptr [r15+0x20], rdi
+ mov gword ptr [rbx+0x28], rdi
;; size=4 bbWeight=1 PerfScore 1.00
G_M20015_IG08:
- mov dword ptr [r15+0x36], edi
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M20015_IG09:
- mov gword ptr [r15+0x28], rdi
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M20015_IG10:
- mov dword ptr [r15+0x3A], edi
+ mov dword ptr [rbx+0x3A], edi
mov rdi, 0xD1FFAB1E ; data for Microsoft.Extensions.DependencyModel.CompilationOptions:<Default>k__BackingField
- mov rsi, r15
+ mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
nop
- ;; size=23 bbWeight=1 PerfScore 2.75
-G_M20015_IG11:
+ ;; size=22 bbWeight=1 PerfScore 2.75
+G_M20015_IG09:
add rsp, 8
pop rbx
- pop r14
- pop r15
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.25
+ ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 183, prolog size 12, PerfScore 24.62, instruction count 48, allocated bytes for code 183 (MethodHash=d9fbb1d0) for method Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts)
+; Total bytes of code 107, prolog size 8, PerfScore 21.00, instruction count 28, allocated bytes for code 107 (MethodHash=d9fbb1d0) for method Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts)
; ============================================================ -7 (-2.39 % 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 AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 3 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 4 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 5.50) ref -> r15 this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+; 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, 5.50) int -> rbx single-def
-; V02 arg2 [V02,T02] ( 6, 5 ) int -> r14
-; V03 loc0 [V03,T03] ( 8, 5 ) int -> r14
-; V04 loc1 [V04,T07] ( 3, 1.50) ref -> r15 class-hnd exact single-def <System.Linq.Expressions.Expression[]>
+; V02 arg2 [V02,T01] ( 6, 5 ) int -> r15
+; V03 loc0 [V03,T03] ( 8, 5 ) int -> r15
+; V04 loc1 [V04,T07] ( 3, 1.50) ref -> r14 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"
-; V06 tmp1 [V06,T05] ( 2, 4 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-; V07 tmp2 [V07,T04] ( 3, 4 ) int -> r13 ld-addr-op "Inlining Arg"
+; V06 tmp1 [V06,T06] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
+; V07 tmp2 [V07,T05] ( 3, 4 ) int -> r14 ld-addr-op "Inlining Arg"
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V09 tmp4 [V09,T08] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
; V10 tmp5 [V10,T09] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
; V11 tmp6 [V11,T10] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V12 cse0 [V12,T06] ( 4, 3 ) ref -> r13 "CSE #02: aggressive"
+; V12 cse0 [V12,T04] ( 7, 5 ) ref -> r13 multi-def "CSE #01: aggressive"
;
; Lcl frame size = 0
G_M14820_IG01:
push rbp
push r15
push r14
push r13
push rbx
lea rbp, [rsp+0x20]
- mov r15, rdi
+ mov r14, rdi
mov ebx, esi
- mov r14d, edx
+ mov r15d, edx
;; size=21 bbWeight=1 PerfScore 6.25
G_M14820_IG02:
- mov rdi, r15
+ mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
call [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
- test r14d, r14d
+ test r15d, r15d
jge SHORT G_M14820_IG04
;; size=20 bbWeight=1 PerfScore 4.75
G_M14820_IG03:
- mov rdi, gword ptr [r15+0x10]
- add r14d, dword ptr [rdi+0x08]
+ mov r13, gword ptr [r14+0x10]
+ add r15d, dword ptr [r13+0x08]
;; size=8 bbWeight=0.50 PerfScore 2.50
G_M14820_IG04:
- sub r14d, ebx
- inc r14d
- mov rdi, gword ptr [r15+0x10]
- test r14d, r14d
+ sub r15d, ebx
+ 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
- cmp dword ptr [rdi], edi
- call System.SZArrayHelper:get_Count[System.Object]():int:this
- mov r13d, eax
- sub r13d, ebx
- cmp r13d, r14d
+ mov r14d, dword ptr [rsi+0x08]
+ sub r14d, ebx
+ cmp r14d, r15d
jl SHORT G_M14820_IG09
- mov r13, gword ptr [r15+0x10]
- cmp dword ptr [r13+0x08], r14d
+ cmp dword ptr [r13+0x08], r15d
je SHORT G_M14820_IG07
- ;; size=55 bbWeight=1 PerfScore 16.75
+ ;; size=48 bbWeight=1 PerfScore 12.75
G_M14820_IG05:
- movsxd rsi, r14d
+ movsxd rsi, r15d
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
call CORINFO_HELP_NEWARR_1_OBJ
- mov r15, rax
+ mov r14, rax
mov rdi, r13
mov esi, ebx
- mov rdx, r15
- mov r8d, r14d
+ mov rdx, r14
+ 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, r15
+ mov rax, r14
;; size=49 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
;; 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, r14d
- mov edi, r13d
+ 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 PerfScore 0.00
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 PerfScore 0.00
G_M14820_IG11:
mov edi, 0x4809
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rsi, rax
- mov edi, r14d
+ mov edi, r15d
mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
call [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
int3
;; size=39 bbWeight=0 PerfScore 0.00
-; Total bytes of code 293, prolog size 13, PerfScore 37.12, instruction count 82, allocated bytes for code 293 (MethodHash=8d08c61b) for method System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts)
+; Total bytes of code 286, prolog size 13, PerfScore 33.12, 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)
; ============================================================ -6 (-3.64 % of base) - System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type ; Assembly listing for method System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 6, 6 ) ref -> rbx class-hnd single-def <System.Type[]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 8
G_M54830_IG01:
push rbp
push rbx
push rax
lea rbp, [rsp+0x10]
mov rbx, rdi
;; size=11 bbWeight=1 PerfScore 3.75
G_M54830_IG02:
test rbx, rbx
je SHORT G_M54830_IG05
- mov rdi, rbx
- call System.SZArrayHelper:get_Count[System.Object]():int:this
- test eax, eax
+ cmp dword ptr [rbx+0x08], 0
je SHORT G_M54830_IG04
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Dynamic.Utils.ContractUtils:RequiresNotNullItems[System.Type](System.Collections.Generic.IList`1[System.Type],System.String)
mov rdx, 0xD1FFAB1E ; 'typeArgs'
mov rax, 0xD1FFAB1E ; code for System.Dynamic.Utils.ContractUtils:RequiresNotNullItems[System.__Canon](System.Collections.Generic.IList`1[System.__Canon],System.String)
call [rax]System.Dynamic.Utils.ContractUtils:RequiresNotNullItems[System.__Canon](System.Collections.Generic.IList`1[System.__Canon],System.String)
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Compiler.DelegateHelpers:MakeDelegateType(System.Type[]):System.Type
- ;; size=65 bbWeight=1 PerfScore 8.25
+ ;; size=59 bbWeight=1 PerfScore 9.75
G_M54830_IG03:
add rsp, 8
pop rbx
pop rbp
tail.jmp [rax]System.Linq.Expressions.Compiler.DelegateHelpers:MakeDelegateType(System.Type[]):System.Type
;; size=9 bbWeight=1 PerfScore 3.25
G_M54830_IG04:
mov edi, 0x30FF
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Error:NonEmptyCollectionRequired(System.String):System.ArgumentException
call [rax]System.Linq.Expressions.Error:NonEmptyCollectionRequired(System.String):System.ArgumentException
mov rdi, rax
call CORINFO_HELP_THROW
int3
;; size=44 bbWeight=0 PerfScore 0.00
G_M54830_IG05:
mov edi, 0x30FF
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 165, prolog size 8, PerfScore 15.25, instruction count 38, allocated bytes for code 165 (MethodHash=af2a29d1) for method System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type (FullOpts)
+; Total bytes of code 159, prolog size 8, PerfScore 16.75, instruction count 36, allocated bytes for code 159 (MethodHash=af2a29d1) for method System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type (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/c6ad82d7b8ae9ccaee560fb5e52b7acb |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 21 minutes 4 seconds.
dotnet/runtime#109209
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: