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
[X64] MihaZupan/runtime/span-startsWith #409
Comments
Top method regressions130 (55.79 % of base) - System.Net.Cookie:Equals(System.Object):ubyte:this ; Assembly listing for method System.Net.Cookie:Equals(System.Object):ubyte:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 14 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 7, 4.50) ref -> rbx this class-hnd single-def <System.Net.Cookie>
; V01 arg1 [V01,T01] ( 5, 3.75) ref -> rsi class-hnd single-def <System.Object>
-; V02 loc0 [V02,T04] ( 6, 3 ) ref -> r15 class-hnd exact <System.Net.Cookie>
+; V02 loc0 [V02,T05] ( 6, 3 ) ref -> r15 class-hnd exact <System.Net.Cookie>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <System.Net.Cookie>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
+;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V11 tmp8 [V11,T02] ( 4, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.String>
+; V11 tmp8 [V11,T03] ( 4, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.String>
;* V12 tmp9 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V14 tmp11 [V14,T05] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
-; V15 tmp12 [V15,T07] ( 2, 2 ) int -> rdi "Inlining Arg"
-;* V16 tmp13 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V17 tmp14 [V17,T03] ( 4, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.String>
+; V14 tmp11 [V14,T15] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V15 tmp12 [V15,T19] ( 2, 2 ) int -> rdi "Inlining Arg"
+;* V16 tmp13 [V16 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+; V17 tmp14 [V17,T04] ( 4, 4 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
;* V18 tmp15 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V19 tmp16 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V20 tmp17 [V20,T06] ( 2, 2 ) byref -> rcx single-def "Inlining Arg"
-; V21 tmp18 [V21,T08] ( 2, 2 ) int -> rdi "Inlining Arg"
-; V22 tmp19 [V22,T09] ( 3, 1.50) byref -> rsi "field V08._reference (fldOffset=0x0)" P-INDEP
-; V23 tmp20 [V23,T11] ( 3, 1.50) int -> rdx "field V08._length (fldOffset=0x8)" P-INDEP
-;* V24 tmp21 [V24 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp22 [V25 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V26 tmp23 [V26,T13] ( 2, 1 ) byref -> rsi single-def "field V12._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp24 [V27,T15] ( 2, 1 ) int -> rdi "field V12._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp25 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp26 [V29 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V30 tmp27 [V30,T10] ( 3, 1.50) byref -> rcx "field V16._reference (fldOffset=0x0)" P-INDEP
-; V31 tmp28 [V31,T12] ( 3, 1.50) int -> rax "field V16._length (fldOffset=0x8)" P-INDEP
-; V32 tmp29 [V32,T14] ( 2, 1 ) byref -> rcx single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-; V33 tmp30 [V33,T16] ( 2, 1 ) int -> rdi "field V18._length (fldOffset=0x8)" P-INDEP
-;* V34 tmp31 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
-;* V35 tmp32 [V35 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
+; V20 tmp17 [V20,T16] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V21 tmp18 [V21,T20] ( 2, 2 ) int -> rdx "Inlining Arg"
+;* V22 tmp19 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V23 tmp20 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V24 tmp21 [V24,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V25 tmp22 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V26 tmp23 [V26 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inline stloc first use temp"
+;* V27 tmp24 [V27 ] ( 0, 0 ) byref -> zero-ref
+;* V28 tmp25 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V29 tmp26 [V29,T17] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V30 tmp27 [V30,T21] ( 2, 2 ) int -> rdi "Inlining Arg"
+;* V31 tmp28 [V31,T32] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp29 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V33 tmp30 [V33 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inline stloc first use temp"
+;* V34 tmp31 [V34 ] ( 0, 0 ) byref -> zero-ref
+;* V35 tmp32 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V36 tmp33 [V36,T18] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V37 tmp34 [V37,T22] ( 2, 2 ) int -> rdx "Inlining Arg"
+;* V38 tmp35 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V39 tmp36 [V39 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V40 tmp37 [V40 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+; V41 tmp38 [V41,T10] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+;* V42 tmp39 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V43 tmp40 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V44 tmp41 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
+;* V45 tmp42 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V46 tmp43 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+; V47 tmp44 [V47,T11] ( 4, 2 ) ubyte -> rax "Inline return value spill temp"
+;* V48 tmp45 [V48 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V49 tmp46 [V49 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+; V50 tmp47 [V50,T08] ( 4, 2 ) byref -> rsi "field V08._reference (fldOffset=0x0)" P-INDEP
+; V51 tmp48 [V51,T12] ( 4, 2 ) int -> rdi "field V08._length (fldOffset=0x8)" P-INDEP
+;* V52 tmp49 [V52 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V53 tmp50 [V53 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
+; V54 tmp51 [V54,T23] ( 2, 1 ) byref -> rsi single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+; V55 tmp52 [V55,T27] ( 2, 1 ) int -> rdi "field V12._length (fldOffset=0x8)" P-INDEP
+;* V56 tmp53 [V56 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;* V57 tmp54 [V57 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
+; V58 tmp55 [V58,T09] ( 4, 2 ) byref -> rax "field V16._reference (fldOffset=0x0)" P-INDEP
+; V59 tmp56 [V59,T13] ( 4, 2 ) int -> rdx "field V16._length (fldOffset=0x8)" P-INDEP
+; V60 tmp57 [V60,T24] ( 2, 1 ) byref -> rax single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V61 tmp58 [V61,T28] ( 2, 1 ) int -> rdx "field V18._length (fldOffset=0x8)" P-INDEP
+;* V62 tmp59 [V62 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
+;* V63 tmp60 [V63 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
+; V64 tmp61 [V64,T06] ( 6, 3 ) byref -> rcx "field V22._reference (fldOffset=0x0)" P-INDEP
+; V65 tmp62 [V65,T14] ( 4, 2 ) int -> r8 "field V22._length (fldOffset=0x8)" P-INDEP
+; V66 tmp63 [V66,T07] ( 6, 3 ) byref -> r9 "field V23._reference (fldOffset=0x0)" P-INDEP
+; V67 tmp64 [V67,T02] ( 10, 5 ) int -> r10 "field V23._length (fldOffset=0x8)" P-INDEP
+;* V68 tmp65 [V68 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP
+;* V69 tmp66 [V69 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
+; V70 tmp67 [V70,T25] ( 2, 1 ) byref -> rcx single-def "field V28._reference (fldOffset=0x0)" P-INDEP
+; V71 tmp68 [V71,T29] ( 2, 1 ) int -> r8 "field V28._length (fldOffset=0x8)" P-INDEP
+;* V72 tmp69 [V72 ] ( 0, 0 ) byref -> zero-ref single-def "field V32._reference (fldOffset=0x0)" P-INDEP
+;* V73 tmp70 [V73 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
+; V74 tmp71 [V74,T26] ( 2, 1 ) byref -> r9 single-def "field V35._reference (fldOffset=0x0)" P-INDEP
+; V75 tmp72 [V75,T30] ( 2, 1 ) int -> r10 "field V35._length (fldOffset=0x8)" P-INDEP
+;* V76 tmp73 [V76 ] ( 0, 0 ) byref -> zero-ref single-def "field V39._reference (fldOffset=0x0)" P-INDEP
+;* V77 tmp74 [V77 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
+;* V78 tmp75 [V78 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
+;* V79 tmp76 [V79 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
+;* V80 tmp77 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V81 tmp78 [V81 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
+;* V82 tmp79 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP
+;* V83 tmp80 [V83 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
+;* V84 tmp81 [V84 ] ( 0, 0 ) byref -> zero-ref single-def "field V45._reference (fldOffset=0x0)" P-INDEP
+;* V85 tmp82 [V85 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
+;* V86 tmp83 [V86 ] ( 0, 0 ) byref -> zero-ref single-def "field V46._reference (fldOffset=0x0)" P-INDEP
+;* V87 tmp84 [V87 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M1639_IG01:
push rbp
push r15
push rbx
lea rbp, [rsp+0x10]
mov rbx, rdi
;; size=12 bbWeight=1 PerfScore 3.75
G_M1639_IG02:
test rsi, rsi
- je G_M1639_IG10
+ je G_M1639_IG16
;; size=9 bbWeight=1 PerfScore 1.25
G_M1639_IG03:
mov rdi, 0xD1FFAB1E ; System.Net.Cookie
cmp qword ptr [rsi], rdi
- jne G_M1639_IG10
+ jne G_M1639_IG16
;; size=19 bbWeight=0.25 PerfScore 1.06
G_M1639_IG04:
mov r15, rsi
mov rdi, gword ptr [rbx+0x20]
mov rsi, gword ptr [r15+0x20]
mov edx, 5
mov rax, 0xD1FFAB1E ; code for System.String:Equals(System.String,System.String,int):ubyte
call [rax]System.String:Equals(System.String,System.String,int):ubyte
test eax, eax
- je G_M1639_IG10
+ je G_M1639_IG16
mov rdi, gword ptr [rbx+0x40]
mov rsi, gword ptr [r15+0x40]
mov edx, 4
mov rax, 0xD1FFAB1E ; code for System.String:Equals(System.String,System.String,int):ubyte
call [rax]System.String:Equals(System.String,System.String,int):ubyte
test eax, eax
- je SHORT G_M1639_IG10
+ je G_M1639_IG16
mov rdi, gword ptr [rbx+0x28]
mov rsi, gword ptr [r15+0x28]
mov edx, 4
mov rax, 0xD1FFAB1E ; code for System.String:Equals(System.String,System.String,int):ubyte
call [rax]System.String:Equals(System.String,System.String,int):ubyte
test eax, eax
- je SHORT G_M1639_IG10
+ je G_M1639_IG16
mov rdi, gword ptr [rbx+0x18]
test rdi, rdi
je SHORT G_M1639_IG05
lea rsi, bword ptr [rdi+0x0C]
mov edi, dword ptr [rdi+0x08]
- mov edx, edi
jmp SHORT G_M1639_IG06
- ;; size=114 bbWeight=0.50 PerfScore 17.25
+ ;; size=120 bbWeight=0.50 PerfScore 17.12
G_M1639_IG05:
xor rsi, rsi
- xor edx, edx
+ xor edi, edi
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M1639_IG06:
- mov rdi, gword ptr [r15+0x18]
- test rdi, rdi
+ mov rdx, gword ptr [r15+0x18]
+ test rdx, rdx
je SHORT G_M1639_IG07
- lea rcx, bword ptr [rdi+0x0C]
- mov edi, dword ptr [rdi+0x08]
- mov eax, edi
+ lea rax, bword ptr [rdx+0x0C]
+ mov edx, dword ptr [rdx+0x08]
jmp SHORT G_M1639_IG08
- ;; size=20 bbWeight=0.50 PerfScore 4.00
+ ;; size=18 bbWeight=0.50 PerfScore 3.88
G_M1639_IG07:
- xor rcx, rcx
- xor eax, eax
+ xor rax, rax
+ xor edx, edx
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M1639_IG08:
- mov rdi, rsi
- mov esi, edx
- mov rdx, rcx
- mov ecx, eax
- mov rax, 0xD1FFAB1E ; code for System.Net.CookieComparer:EqualDomains(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):ubyte
- call [rax]System.Net.CookieComparer:EqualDomains(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):ubyte
- test eax, eax
+ mov rcx, rsi
+ mov r8d, edi
+ mov r9, rax
+ mov r10d, edx
+ test r8d, r8d
+ je SHORT G_M1639_IG09
+ cmp word ptr [rcx], 46
+ jne SHORT G_M1639_IG09
+ add rsi, 2
+ dec edi
+ mov rcx, rsi
+ mov r8d, edi
+ ;; size=35 bbWeight=0.50 PerfScore 3.62
+G_M1639_IG09:
+ test r10d, r10d
je SHORT G_M1639_IG10
+ cmp word ptr [r9], 46
+ jne SHORT G_M1639_IG10
+ add rax, 2
+ dec edx
+ mov r9, rax
+ mov r10d, edx
+ ;; size=24 bbWeight=0.50 PerfScore 3.12
+G_M1639_IG10:
+ cmp r8d, r10d
+ jne SHORT G_M1639_IG16
+ test r10d, r10d
+ je SHORT G_M1639_IG14
+ cmp r10d, 8
+ jl SHORT G_M1639_IG12
+ cmp r10d, 16
+ jge SHORT G_M1639_IG11
+ mov rdi, rcx
+ mov rsi, r9
+ mov edx, r10d
+ mov rax, 0xD1FFAB1E ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte
+ call [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte
+ jmp SHORT G_M1639_IG13
+ ;; size=45 bbWeight=0.50 PerfScore 5.50
+G_M1639_IG11:
+ mov rdi, rcx
+ mov rsi, r9
+ mov edx, r10d
+ mov rax, 0xD1FFAB1E ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector256`1[ushort]](byref,byref,int):ubyte
+ call [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector256`1[ushort]](byref,byref,int):ubyte
+ jmp SHORT G_M1639_IG13
+ ;; size=23 bbWeight=0.50 PerfScore 3.00
+G_M1639_IG12:
+ mov rdi, rcx
+ mov rsi, r9
+ mov edx, r10d
+ mov rax, 0xD1FFAB1E ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Scalar(byref,byref,int):ubyte
+ call [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Scalar(byref,byref,int):ubyte
+ ;; size=21 bbWeight=0.50 PerfScore 2.00
+G_M1639_IG13:
+ test eax, eax
+ je SHORT G_M1639_IG16
+ ;; size=4 bbWeight=0.50 PerfScore 0.62
+G_M1639_IG14:
mov eax, dword ptr [rbx+0x54]
cmp eax, dword ptr [r15+0x54]
sete al
movzx rax, al
- ;; size=39 bbWeight=0.50 PerfScore 5.88
-G_M1639_IG09:
+ ;; size=13 bbWeight=0.50 PerfScore 3.12
+G_M1639_IG15:
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M1639_IG10:
+G_M1639_IG16:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M1639_IG11:
+G_M1639_IG17:
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 233, prolog size 9, PerfScore 36.31, instruction count 71, allocated bytes for code 233 (MethodHash=fcf9f998) for method System.Net.Cookie:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 363, prolog size 9, PerfScore 51.19, instruction count 108, allocated bytes for code 363 (MethodHash=fcf9f998) for method System.Net.Cookie:Equals(System.Object):ubyte:this (FullOpts) 126 (80.77 % of base) - System.Net.CookieComparer:Equals(System.Net.Cookie,System.Net.Cookie):ubyte ; Assembly listing for method System.Net.CookieComparer:Equals(System.Net.Cookie,System.Net.Cookie):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 10 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 16 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <System.Net.Cookie>
; V01 arg1 [V01,T01] ( 5, 4 ) ref -> r15 class-hnd single-def <System.Net.Cookie>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
+;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-; V07 tmp5 [V07,T02] ( 4, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.String>
+; V07 tmp5 [V07,T03] ( 4, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.String>
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp7 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp8 [V10,T04] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
-; V11 tmp9 [V11,T06] ( 2, 2 ) int -> rdi "Inlining Arg"
-;* V12 tmp10 [V12 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V13 tmp11 [V13,T03] ( 4, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.String>
+; V10 tmp8 [V10,T14] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V11 tmp9 [V11,T18] ( 2, 2 ) int -> rdi "Inlining Arg"
+;* V12 tmp10 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+; V13 tmp11 [V13,T04] ( 4, 4 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
;* V14 tmp12 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V16 tmp14 [V16,T05] ( 2, 2 ) byref -> rcx single-def "Inlining Arg"
-; V17 tmp15 [V17,T07] ( 2, 2 ) int -> rdi "Inlining Arg"
-; V18 tmp16 [V18,T08] ( 3, 1.50) byref -> rsi "field V04._reference (fldOffset=0x0)" P-INDEP
-; V19 tmp17 [V19,T10] ( 3, 1.50) int -> rdx "field V04._length (fldOffset=0x8)" P-INDEP
-;* V20 tmp18 [V20 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V22 tmp20 [V22,T12] ( 2, 1 ) byref -> rsi single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V23 tmp21 [V23,T14] ( 2, 1 ) int -> rdi "field V08._length (fldOffset=0x8)" P-INDEP
-;* V24 tmp22 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp23 [V25 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V26 tmp24 [V26,T09] ( 3, 1.50) byref -> rcx "field V12._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp25 [V27,T11] ( 3, 1.50) int -> rax "field V12._length (fldOffset=0x8)" P-INDEP
-; V28 tmp26 [V28,T13] ( 2, 1 ) byref -> rcx single-def "field V14._reference (fldOffset=0x0)" P-INDEP
-; V29 tmp27 [V29,T15] ( 2, 1 ) int -> rdi "field V14._length (fldOffset=0x8)" P-INDEP
-;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-;* V31 tmp29 [V31 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
+; V16 tmp14 [V16,T15] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V17 tmp15 [V17,T19] ( 2, 2 ) int -> rdx "Inlining Arg"
+;* V18 tmp16 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V19 tmp17 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V20 tmp18 [V20,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V21 tmp19 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V22 tmp20 [V22 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inline stloc first use temp"
+;* V23 tmp21 [V23 ] ( 0, 0 ) byref -> zero-ref
+;* V24 tmp22 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V25 tmp23 [V25,T16] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V26 tmp24 [V26,T20] ( 2, 2 ) int -> rdi "Inlining Arg"
+;* V27 tmp25 [V27,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V28 tmp26 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V29 tmp27 [V29 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inline stloc first use temp"
+;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref
+;* V31 tmp29 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+; V32 tmp30 [V32,T17] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V33 tmp31 [V33,T21] ( 2, 2 ) int -> rdx "Inlining Arg"
+;* V34 tmp32 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V35 tmp33 [V35 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V36 tmp34 [V36 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+; V37 tmp35 [V37,T09] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+;* V38 tmp36 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V39 tmp37 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V40 tmp38 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
+;* V41 tmp39 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V42 tmp40 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+; V43 tmp41 [V43,T10] ( 4, 2 ) ubyte -> rax "Inline return value spill temp"
+;* V44 tmp42 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V45 tmp43 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+; V46 tmp44 [V46,T07] ( 4, 2 ) byref -> rsi "field V04._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp45 [V47,T11] ( 4, 2 ) int -> rdi "field V04._length (fldOffset=0x8)" P-INDEP
+;* V48 tmp46 [V48 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V49 tmp47 [V49 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
+; V50 tmp48 [V50,T22] ( 2, 1 ) byref -> rsi single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V51 tmp49 [V51,T26] ( 2, 1 ) int -> rdi "field V08._length (fldOffset=0x8)" P-INDEP
+;* V52 tmp50 [V52 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V53 tmp51 [V53 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
+; V54 tmp52 [V54,T08] ( 4, 2 ) byref -> rax "field V12._reference (fldOffset=0x0)" P-INDEP
+; V55 tmp53 [V55,T12] ( 4, 2 ) int -> rdx "field V12._length (fldOffset=0x8)" P-INDEP
+; V56 tmp54 [V56,T23] ( 2, 1 ) byref -> rax single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+; V57 tmp55 [V57,T27] ( 2, 1 ) int -> rdx "field V14._length (fldOffset=0x8)" P-INDEP
+;* V58 tmp56 [V58 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+;* V59 tmp57 [V59 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
+; V60 tmp58 [V60,T05] ( 6, 3 ) byref -> rcx "field V18._reference (fldOffset=0x0)" P-INDEP
+; V61 tmp59 [V61,T13] ( 4, 2 ) int -> r8 "field V18._length (fldOffset=0x8)" P-INDEP
+; V62 tmp60 [V62,T06] ( 6, 3 ) byref -> r9 "field V19._reference (fldOffset=0x0)" P-INDEP
+; V63 tmp61 [V63,T02] ( 10, 5 ) int -> r10 "field V19._length (fldOffset=0x8)" P-INDEP
+;* V64 tmp62 [V64 ] ( 0, 0 ) byref -> zero-ref single-def "field V21._reference (fldOffset=0x0)" P-INDEP
+;* V65 tmp63 [V65 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
+; V66 tmp64 [V66,T24] ( 2, 1 ) byref -> rcx single-def "field V24._reference (fldOffset=0x0)" P-INDEP
+; V67 tmp65 [V67,T28] ( 2, 1 ) int -> r8 "field V24._length (fldOffset=0x8)" P-INDEP
+;* V68 tmp66 [V68 ] ( 0, 0 ) byref -> zero-ref single-def "field V28._reference (fldOffset=0x0)" P-INDEP
+;* V69 tmp67 [V69 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
+; V70 tmp68 [V70,T25] ( 2, 1 ) byref -> r9 single-def "field V31._reference (fldOffset=0x0)" P-INDEP
+; V71 tmp69 [V71,T29] ( 2, 1 ) int -> r10 "field V31._length (fldOffset=0x8)" P-INDEP
+;* V72 tmp70 [V72 ] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
+;* V73 tmp71 [V73 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
+;* V74 tmp72 [V74 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP
+;* V75 tmp73 [V75 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP
+;* V76 tmp74 [V76 ] ( 0, 0 ) byref -> zero-ref single-def "field V38._reference (fldOffset=0x0)" P-INDEP
+;* V77 tmp75 [V77 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
+;* V78 tmp76 [V78 ] ( 0, 0 ) byref -> zero-ref single-def "field V39._reference (fldOffset=0x0)" P-INDEP
+;* V79 tmp77 [V79 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
+;* V80 tmp78 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "field V41._reference (fldOffset=0x0)" P-INDEP
+;* V81 tmp79 [V81 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
+;* V82 tmp80 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V83 tmp81 [V83 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M47132_IG01:
push rbp
push r15
push rbx
lea rbp, [rsp+0x10]
mov rbx, rdi
mov r15, rsi
;; size=15 bbWeight=1 PerfScore 4.00
G_M47132_IG02:
mov rdi, gword ptr [rbx+0x20]
mov rsi, gword ptr [r15+0x20]
mov edx, 5
mov rax, 0xD1FFAB1E ; code for System.String:Equals(System.String,System.String,int):ubyte
call [rax]System.String:Equals(System.String,System.String,int):ubyte
test eax, eax
- je SHORT G_M47132_IG09
- ;; size=29 bbWeight=1 PerfScore 8.75
+ je G_M47132_IG15
+ ;; size=33 bbWeight=1 PerfScore 8.75
G_M47132_IG03:
mov rdi, gword ptr [rbx+0x18]
test rdi, rdi
je SHORT G_M47132_IG04
lea rsi, bword ptr [rdi+0x0C]
mov edi, dword ptr [rdi+0x08]
- mov edx, edi
jmp SHORT G_M47132_IG05
- ;; size=20 bbWeight=0.50 PerfScore 4.00
+ ;; size=18 bbWeight=0.50 PerfScore 3.88
G_M47132_IG04:
xor rsi, rsi
- xor edx, edx
+ xor edi, edi
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M47132_IG05:
- mov rdi, gword ptr [r15+0x18]
- test rdi, rdi
+ mov rdx, gword ptr [r15+0x18]
+ test rdx, rdx
je SHORT G_M47132_IG06
- lea rcx, bword ptr [rdi+0x0C]
- mov edi, dword ptr [rdi+0x08]
- mov eax, edi
+ lea rax, bword ptr [rdx+0x0C]
+ mov edx, dword ptr [rdx+0x08]
jmp SHORT G_M47132_IG07
- ;; size=20 bbWeight=0.50 PerfScore 4.00
+ ;; size=18 bbWeight=0.50 PerfScore 3.88
G_M47132_IG06:
- xor rcx, rcx
- xor eax, eax
+ xor rax, rax
+ xor edx, edx
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M47132_IG07:
- mov rdi, rsi
- mov esi, edx
- mov rdx, rcx
- mov ecx, eax
- mov rax, 0xD1FFAB1E ; code for System.Net.CookieComparer:EqualDomains(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):ubyte
- call [rax]System.Net.CookieComparer:EqualDomains(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):ubyte
- test eax, eax
+ mov rcx, rsi
+ mov r8d, edi
+ mov r9, rax
+ mov r10d, edx
+ test r8d, r8d
+ je SHORT G_M47132_IG08
+ cmp word ptr [rcx], 46
+ jne SHORT G_M47132_IG08
+ add rsi, 2
+ dec edi
+ mov rcx, rsi
+ mov r8d, edi
+ ;; size=35 bbWeight=0.50 PerfScore 3.62
+G_M47132_IG08:
+ test r10d, r10d
je SHORT G_M47132_IG09
+ cmp word ptr [r9], 46
+ jne SHORT G_M47132_IG09
+ add rax, 2
+ dec edx
+ mov r9, rax
+ mov r10d, edx
+ ;; size=24 bbWeight=0.50 PerfScore 3.12
+G_M47132_IG09:
+ cmp r8d, r10d
+ jne SHORT G_M47132_IG15
+ test r10d, r10d
+ je SHORT G_M47132_IG13
+ cmp r10d, 8
+ jl SHORT G_M47132_IG11
+ cmp r10d, 16
+ jge SHORT G_M47132_IG10
+ mov rdi, rcx
+ mov rsi, r9
+ mov edx, r10d
+ mov rax, 0xD1FFAB1E ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte
+ call [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte
+ jmp SHORT G_M47132_IG12
+ ;; size=45 bbWeight=0.50 PerfScore 5.50
+G_M47132_IG10:
+ mov rdi, rcx
+ mov rsi, r9
+ mov edx, r10d
+ mov rax, 0xD1FFAB1E ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector256`1[ushort]](byref,byref,int):ubyte
+ call [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector256`1[ushort]](byref,byref,int):ubyte
+ jmp SHORT G_M47132_IG12
+ ;; size=23 bbWeight=0.50 PerfScore 3.00
+G_M47132_IG11:
+ mov rdi, rcx
+ mov rsi, r9
+ mov edx, r10d
+ mov rax, 0xD1FFAB1E ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Scalar(byref,byref,int):ubyte
+ call [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Scalar(byref,byref,int):ubyte
+ ;; size=21 bbWeight=0.50 PerfScore 2.00
+G_M47132_IG12:
+ test eax, eax
+ je SHORT G_M47132_IG15
+ ;; size=4 bbWeight=0.50 PerfScore 0.62
+G_M47132_IG13:
mov rdi, gword ptr [rbx+0x28]
mov rsi, gword ptr [r15+0x28]
mov edx, 4
mov rax, 0xD1FFAB1E ; code for System.String:Equals(System.String,System.String,int):ubyte
call [rax]System.String:Equals(System.String,System.String,int):ubyte
nop
- ;; size=52 bbWeight=0.50 PerfScore 6.62
-G_M47132_IG08:
+ ;; size=26 bbWeight=0.50 PerfScore 3.88
+G_M47132_IG14:
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M47132_IG09:
+G_M47132_IG15:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M47132_IG10:
+G_M47132_IG16:
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 156, prolog size 9, PerfScore 30.50, instruction count 54, allocated bytes for code 156 (MethodHash=629147e3) for method System.Net.CookieComparer:Equals(System.Net.Cookie,System.Net.Cookie):ubyte (FullOpts)
+; Total bytes of code 282, prolog size 9, PerfScore 45.38, instruction count 91, allocated bytes for code 282 (MethodHash=629147e3) for method System.Net.CookieComparer:Equals(System.Net.Cookie,System.Net.Cookie):ubyte (FullOpts) Larger list of diffs: https://gist.github.com/MihuBot/47c0c3ca0242873d76aa3bda4c0a8348 |
Top method improvements-126 (-16.01 % of base) - System.Xml.XmlTextReaderImpl:.ctor(System.IO.Stream,ubyte[],int,System.Xml.XmlReaderSettings,System.Uri,System.String,System.Xml.XmlParserContext,ubyte):this ; Assembly listing for method System.Xml.XmlTextReaderImpl:.ctor(System.IO.Stream,ubyte[],int,System.Xml.XmlReaderSettings,System.Uri,System.String,System.Xml.XmlParserContext,ubyte):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 23 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 23 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 12, 7.50) ref -> rbx this class-hnd single-def <System.Xml.XmlTextReaderImpl>
-; V01 arg1 [V01,T08] ( 3, 3 ) ref -> r12 class-hnd single-def <System.IO.Stream>
-; V02 arg2 [V02,T09] ( 3, 3 ) ref -> [rbp-0x38] class-hnd single-def <ubyte[]>
-; V03 arg3 [V03,T10] ( 3, 3 ) int -> [rbp-0x2C] single-def
+; V01 arg1 [V01,T05] ( 3, 3 ) ref -> r13 class-hnd single-def <System.IO.Stream>
+; V02 arg2 [V02,T06] ( 3, 3 ) ref -> r12 class-hnd single-def <ubyte[]>
+; V03 arg3 [V03,T07] ( 3, 3 ) int -> [rbp-0x2C] single-def
; V04 arg4 [V04,T01] ( 7, 6.50) ref -> r15 class-hnd single-def <System.Xml.XmlReaderSettings>
-; V05 arg5 [V05,T05] ( 4, 3.50) ref -> r13 class-hnd single-def <System.Uri>
-; V06 arg6 [V06,T03] ( 11, 6.50) ref -> registers ld-addr-op class-hnd <System.String>
-; V07 arg7 [V07,T11] ( 5, 4 ) ref -> [rbp+0x18] class-hnd single-def <System.Xml.XmlParserContext>
-; V08 arg8 [V08,T16] ( 1, 1 ) ubyte -> [rbp+0x20] single-def
+; V05 arg5 [V05,T04] ( 4, 3.50) ref -> r14 class-hnd single-def <System.Uri>
+; V06 arg6 [V06 ] ( 6, 4.50) ref -> [rbp+0x10] do-not-enreg[X] addr-exposed ld-addr-op class-hnd <System.String>
+; V07 arg7 [V07,T08] ( 5, 4 ) ref -> [rbp+0x18] class-hnd single-def <System.Xml.XmlParserContext>
+; V08 arg8 [V08,T12] ( 1, 1 ) ubyte -> [rbp+0x20] single-def
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
-; V11 tmp2 [V11,T06] ( 5, 5 ) ref -> r14
-; V12 tmp3 [V12,T04] ( 3, 6 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlTextReaderImpl+LaterInitParam>
-;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
+; V11 tmp2 [V11,T09] ( 4, 4 ) ref -> rsi
+; V12 tmp3 [V12,T03] ( 3, 6 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlTextReaderImpl+LaterInitParam>
+; V13 tmp4 [V13,T11] ( 2, 2 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <System.String>
;* V14 tmp5 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-; V15 tmp6 [V15,T07] ( 4, 5 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Xml.XmlResolver>
-; V16 tmp7 [V16,T12] ( 3, 3 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <System.Uri>
-; V17 tmp8 [V17,T13] ( 4, 2 ) ref -> [rbp-0x48] class-hnd spill-single-def "Inline stloc first use temp" <System.Uri>
-; V18 tmp9 [V18,T19] ( 3, 0 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.String>
-; V19 tmp10 [V19,T21] ( 3, 0 ) int -> r14 "impAppendStmt"
-; V20 tmp11 [V20,T17] ( 11, 0 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlException>
-;* V21 tmp12 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V22 tmp13 [V22,T20] ( 3, 0 ) byref -> r13 single-def "Inlining Arg"
-; V23 tmp14 [V23,T18] ( 4, 0 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "dup spill" <System.String[]>
-; V24 tmp15 [V24,T22] ( 3, 0 ) int -> r13 "Inlining Arg"
-; V25 tmp16 [V25,T23] ( 2, 0 ) ref -> [rbp-0x58] class-hnd exact spill-single-def "Inlining Arg" <System.String>
-; V26 tmp17 [V26,T24] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
-; V27 cse0 [V27,T02] ( 8, 7.50) ref -> r14 "CSE #04: aggressive"
-; V28 cse1 [V28,T14] ( 4, 2 ) ref -> rdx "CSE #02: moderate"
-; V29 cse2 [V29,T15] ( 2, 1 ) int -> rax "CSE #01: moderate"
+; V15 tmp6 [V15,T15] ( 3, 0 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.String>
+; V16 tmp7 [V16,T17] ( 3, 0 ) int -> r14 "impAppendStmt"
+; V17 tmp8 [V17,T13] ( 11, 0 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlException>
+;* V18 tmp9 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V19 tmp10 [V19,T16] ( 3, 0 ) byref -> r13 single-def "Inlining Arg"
+; V20 tmp11 [V20,T14] ( 4, 0 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "dup spill" <System.String[]>
+; V21 tmp12 [V21,T18] ( 3, 0 ) int -> r13 "Inlining Arg"
+; V22 tmp13 [V22,T19] ( 2, 0 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "Inlining Arg" <System.String>
+; V23 tmp14 [V23,T20] ( 2, 0 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
+; V24 cse0 [V24,T02] ( 8, 7.50) ref -> [rbp-0x48] spill-single-def "CSE #03: aggressive"
+; V25 cse1 [V25,T10] ( 4, 2 ) ref -> rdx "CSE #01: moderate"
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M30585_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 56
- lea rbp, [rsp+0x60]
- mov gword ptr [rbp-0x38], rdx
+ sub rsp, 40
+ lea rbp, [rsp+0x50]
mov dword ptr [rbp-0x2C], ecx
mov rbx, rdi
- mov r12, rsi
+ mov r13, rsi
+ mov r12, rdx
mov r15, r8
- mov r13, r9
- mov r14, gword ptr [rbp+0x10]
- mov r9, gword ptr [rbp+0x18]
- ;; size=46 bbWeight=1 PerfScore 11.75
+ mov r14, r9
+ mov r8, gword ptr [rbp+0x18]
+ ;; size=41 bbWeight=1 PerfScore 10.00
G_M30585_IG02:
mov rsi, gword ptr [r15+0x10]
mov rdi, rbx
mov rdx, r15
- mov gword ptr [rbp+0x18], r9
- mov rcx, r9
- mov r10, 0xD1FFAB1E ; code for System.Xml.XmlTextReaderImpl:.ctor(System.Xml.XmlResolver,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext):this
- call [r10]System.Xml.XmlTextReaderImpl:.ctor(System.Xml.XmlResolver,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext):this
- mov rdi, gword ptr [r15+0x10]
- test r14, r14
- je G_M30585_IG05
- ;; size=43 bbWeight=1 PerfScore 10.25
-G_M30585_IG03:
- mov eax, dword ptr [r14+0x08]
- test eax, eax
- jle G_M30585_IG05
- cmp word ptr [r14+0x0C], 47
- jne SHORT G_M30585_IG05
- test rdi, rdi
- jne SHORT G_M30585_IG04
- mov rdi, 0xD1FFAB1E ; System.Uri
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x40], rax
- mov rdi, rax
- mov rsi, r14
- mov rcx, 0xD1FFAB1E ; code for System.Uri:.ctor(System.String):this
- call [rcx]System.Uri:.ctor(System.String):this
- mov rdi, gword ptr [rbp-0x40]
- mov rax, 0xD1FFAB1E ; code for System.Uri:ToString():System.String:this
- call [rax]System.Uri:ToString():System.String:this
- mov r14, rax
- jmp SHORT G_M30585_IG05
- ;; size=83 bbWeight=0.50 PerfScore 10.50
-G_M30585_IG04:
- mov rdx, r14
- xor rsi, rsi
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x40]
- call [rax+0x30]System.Xml.XmlResolver:ResolveUri(System.Uri,System.String):System.Uri:this
- mov gword ptr [rbp-0x48], rax
- mov rdi, rax
- mov rcx, 0xD1FFAB1E ; code for System.Uri:get_IsFile():ubyte:this
- cmp dword ptr [rdi], edi
- call [rcx]System.Uri:get_IsFile():ubyte:this
- test eax, eax
- je SHORT G_M30585_IG05
- mov rdi, gword ptr [rbp-0x48]
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x40]
- call [rax+0x08]System.Object:ToString():System.String:this
- mov r14, rax
- ;; size=57 bbWeight=0.50 PerfScore 12.25
-G_M30585_IG05:
+ mov gword ptr [rbp+0x18], r8
+ mov rcx, r8
+ mov r9, 0xD1FFAB1E ; code for System.Xml.XmlTextReaderImpl:.ctor(System.Xml.XmlResolver,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext):this
+ call [r9]System.Xml.XmlTextReaderImpl:.ctor(System.Xml.XmlResolver,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext):this
+ mov rsi, gword ptr [r15+0x10]
+ lea rdi, [rbp+0x10]
+ mov rax, 0xD1FFAB1E ; code for System.Xml.XmlTextReaderImpl:ConvertAbsoluteUnixPathToAbsoluteUri(byref,System.Xml.XmlResolver)
+ call [rax]System.Xml.XmlTextReaderImpl:ConvertAbsoluteUnixPathToAbsoluteUri(byref,System.Xml.XmlResolver)
mov rax, gword ptr [rbp+0x18]
test rax, rax
- je SHORT G_M30585_IG07
- ;; size=9 bbWeight=1 PerfScore 2.25
-G_M30585_IG06:
+ je SHORT G_M30585_IG04
+ ;; size=59 bbWeight=1 PerfScore 15.00
+G_M30585_IG03:
mov gword ptr [rbp+0x18], rax
mov rdx, gword ptr [rax+0x40]
test rdx, rdx
- je SHORT G_M30585_IG09
+ je SHORT G_M30585_IG06
cmp dword ptr [rdx+0x08], 0
- jle SHORT G_M30585_IG09
+ jle SHORT G_M30585_IG06
+ mov rsi, gword ptr [rbp+0x10]
mov rcx, gword ptr [r15+0x10]
- mov rdi, r13
- mov rsi, r14
+ mov rdi, r14
mov r8, 0xD1FFAB1E ; code for System.Xml.XmlTextReaderImpl:UriEqual(System.Uri,System.String,System.String,System.Xml.XmlResolver):ubyte
call [r8]System.Xml.XmlTextReaderImpl:UriEqual(System.Uri,System.String,System.String,System.Xml.XmlResolver):ubyte
test eax, eax
- jne SHORT G_M30585_IG09
- cmp dword ptr [r14+0x08], 0
- jle SHORT G_M30585_IG08
- jmp G_M30585_IG14
- ;; size=58 bbWeight=0.50 PerfScore 10.62
-G_M30585_IG07:
+ jne SHORT G_M30585_IG06
+ mov rdi, gword ptr [rbp+0x10]
+ cmp dword ptr [rdi+0x08], 0
+ jle SHORT G_M30585_IG05
+ jmp G_M30585_IG11
+ ;; size=62 bbWeight=0.50 PerfScore 11.50
+G_M30585_IG04:
mov gword ptr [rbp+0x18], rax
- jmp SHORT G_M30585_IG09
+ jmp SHORT G_M30585_IG06
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M30585_IG08:
- mov r14, gword ptr [rbp+0x18]
- mov rdi, gword ptr [r14+0x40]
- mov rsi, rdi
- mov r14, rsi
- ;; size=14 bbWeight=0.50 PerfScore 1.75
-G_M30585_IG09:
+G_M30585_IG05:
+ mov rax, gword ptr [rbp+0x18]
+ mov rdi, gword ptr [rax+0x40]
+ mov gword ptr [rbp+0x10], rdi
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M30585_IG06:
+ mov rsi, gword ptr [rbp+0x10]
mov rdi, 0xD1FFAB1E ; ''
- test r14, r14
- cmove r14, rdi
+ cmp gword ptr [rbp+0x10], 0
+ cmove rsi, rdi
lea rdi, bword ptr [rbx+0x60]
- mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- movzx r14, byte ptr [rbp+0x20]
- mov byte ptr [rbx+0x17D], r14b
+ movzx rdi, byte ptr [rbp+0x20]
+ mov byte ptr [rbx+0x17D], dil
mov rdi, 0xD1FFAB1E ; System.Xml.XmlTextReaderImpl+LaterInitParam
call CORINFO_HELP_NEWSFAST
mov dword ptr [rax+0x44], 3
lea rdi, bword ptr [rbx+0x08]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- mov r14, gword ptr [rbx+0x08]
- lea rdi, bword ptr [r14+0x08]
- mov rsi, r12
+ mov rax, gword ptr [rbx+0x08]
+ mov gword ptr [rbp-0x48], rax
+ lea rdi, bword ptr [rax+0x08]
+ mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
- lea rdi, bword ptr [r14+0x10]
- mov rsi, gword ptr [rbp-0x38]
+ mov r13, gword ptr [rbp-0x48]
+ lea rdi, bword ptr [r13+0x10]
+ mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
mov r12d, dword ptr [rbp-0x2C]
- mov dword ptr [r14+0x40], r12d
- lea rdi, bword ptr [r14+0x18]
- mov rsi, r13
+ mov dword ptr [r13+0x40], r12d
+ lea rdi, bword ptr [r13+0x18]
+ mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
- lea rdi, bword ptr [r14+0x30]
+ lea rdi, bword ptr [r13+0x30]
mov rsi, gword ptr [rbp+0x18]
call CORINFO_HELP_ASSIGN_REF
- mov dword ptr [r14+0x44], 1
+ mov dword ptr [r13+0x44], 1
cmp byte ptr [r15+0x58], 0
- je SHORT G_M30585_IG12
- ;; size=152 bbWeight=1 PerfScore 26.00
-G_M30585_IG10:
- mov byte ptr [r14+0x48], 1
+ je SHORT G_M30585_IG09
+ ;; size=162 bbWeight=1 PerfScore 29.75
+G_M30585_IG07:
+ mov byte ptr [r13+0x48], 1
;; size=5 bbWeight=0.50 PerfScore 0.50
-G_M30585_IG11:
- add rsp, 56
+G_M30585_IG08:
+ add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M30585_IG12:
+G_M30585_IG09:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Xml.XmlTextReaderImpl:FinishInitStream():this
call [rax]System.Xml.XmlTextReaderImpl:FinishInitStream():this
nop
;; size=16 bbWeight=0.50 PerfScore 1.88
-G_M30585_IG13:
- add rsp, 56
+G_M30585_IG10:
+ add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M30585_IG14:
+G_M30585_IG11:
mov rdi, 0xD1FFAB1E ; 'Xml_DoubleBaseUri'
mov rax, 0xD1FFAB1E ; code for System.SR:GetResourceString(System.String):System.String
call [rax]System.SR:GetResourceString(System.String):System.String
mov r15, rax
mov r14d, dword ptr [rbx+0x1E0]
lea r13, bword ptr [rbx+0x188]
mov rdi, 0xD1FFAB1E ; System.Xml.XmlException
call CORINFO_HELP_NEWSFAST
mov r12, rax
mov eax, dword ptr [r13+0x48]
sub eax, dword ptr [r13+0x5C]
mov r13d, eax
mov rax, gword ptr [rbx+0x1B8]
- mov gword ptr [rbp-0x58], rax
+ mov gword ptr [rbp-0x40], rax
mov rdi, 0xD1FFAB1E ; System.String[]
mov esi, 1
call CORINFO_HELP_NEWARR_1_OBJ
- mov gword ptr [rbp-0x50], rax
+ mov gword ptr [rbp-0x38], rax
mov rdi, 0xD1FFAB1E ; ''
mov gword ptr [rax+0x10], rdi
mov rdi, r15
mov rsi, rax
mov edx, r14d
mov ecx, r13d
mov r8, 0xD1FFAB1E ; code for System.Xml.XmlException:CreateMessage(System.String,System.String[],int,int):System.String
call [r8]System.Xml.XmlException:CreateMessage(System.String,System.String[],int,int):System.String
mov rdi, 0xD1FFAB1E
mov qword ptr [r12+0x70], rdi
lea rdi, bword ptr [r12+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
xor rdi, rdi
mov gword ptr [r12+0x20], rdi
mov dword ptr [r12+0x74], 0xD1FFAB1E
lea rdi, bword ptr [r12+0x78]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r12+0x80]
- mov rsi, gword ptr [rbp-0x50]
+ mov rsi, gword ptr [rbp-0x38]
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r12+0x88]
- mov rsi, gword ptr [rbp-0x58]
+ mov rsi, gword ptr [rbp-0x40]
call CORINFO_HELP_ASSIGN_REF
mov dword ptr [r12+0x98], r14d
mov dword ptr [r12+0x9C], r13d
mov rdi, rbx
mov rsi, r12
mov rax, 0xD1FFAB1E ; code for System.Xml.XmlTextReaderImpl:Throw(System.Exception):this
call [rax]System.Xml.XmlTextReaderImpl:Throw(System.Exception):this
int3
;; size=268 bbWeight=0 PerfScore 0.00
-; Total bytes of code 787, prolog size 19, PerfScore 93.50, instruction count 190, allocated bytes for code 787 (MethodHash=452a8886) for method System.Xml.XmlTextReaderImpl:.ctor(System.IO.Stream,ubyte[],int,System.Xml.XmlReaderSettings,System.Uri,System.String,System.Xml.XmlParserContext,ubyte):this (FullOpts)
+; Total bytes of code 661, prolog size 19, PerfScore 76.38, instruction count 156, allocated bytes for code 661 (MethodHash=452a8886) for method System.Xml.XmlTextReaderImpl:.ctor(System.IO.Stream,ubyte[],int,System.Xml.XmlReaderSettings,System.Uri,System.String,System.Xml.XmlParserContext,ubyte):this (FullOpts) -121 (-32.18 % of base) - System.Xml.XmlTextReaderImpl:.ctor(System.IO.TextReader,System.Xml.XmlReaderSettings,System.String,System.Xml.XmlParserContext):this ; Assembly listing for method System.Xml.XmlTextReaderImpl:.ctor(System.IO.TextReader,System.Xml.XmlReaderSettings,System.String,System.Xml.XmlParserContext):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; 8 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 8, 7.50) ref -> r15 this class-hnd single-def <System.Xml.XmlTextReaderImpl>
-; V01 arg1 [V01,T06] ( 3, 3 ) ref -> r12 class-hnd single-def <System.IO.TextReader>
-; V02 arg2 [V02,T02] ( 7, 7 ) ref -> r14 class-hnd single-def <System.Xml.XmlReaderSettings>
-; V03 arg3 [V03,T00] ( 12, 8 ) ref -> rbx ld-addr-op class-hnd <System.String>
-; V04 arg4 [V04,T03] ( 6, 5.50) ref -> r13 class-hnd single-def <System.Xml.XmlParserContext>
+; V00 this [V00,T00] ( 8, 7.50) ref -> rbx this class-hnd single-def <System.Xml.XmlTextReaderImpl>
+; V01 arg1 [V01,T04] ( 3, 3 ) ref -> r13 class-hnd single-def <System.IO.TextReader>
+; V02 arg2 [V02,T01] ( 7, 7 ) ref -> r15 class-hnd single-def <System.Xml.XmlReaderSettings>
+; V03 arg3 [V03 ] ( 6, 5 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op class-hnd <System.String>
+; V04 arg4 [V04,T02] ( 6, 5.50) ref -> r14 class-hnd single-def <System.Xml.XmlParserContext>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 3, 6 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlTextReaderImpl+LaterInitParam>
-; V07 tmp2 [V07,T05] ( 4, 5 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Xml.XmlResolver>
-; V08 tmp3 [V08,T08] ( 3, 3 ) ref -> [rbp-0x30] class-hnd exact spill-single-def "NewObj constructor temp" <System.Uri>
-; V09 tmp4 [V09,T09] ( 4, 2 ) ref -> [rbp-0x38] class-hnd spill-single-def "Inline stloc first use temp" <System.Uri>
-; V10 cse0 [V10,T07] ( 5, 4.50) ref -> rbx "CSE #03: aggressive"
-; V11 cse1 [V11,T10] ( 3, 1.50) ref -> rdi "CSE #02: moderate"
-; V12 cse2 [V12,T11] ( 2, 1 ) int -> rax "CSE #01: moderate"
+; V06 tmp1 [V06,T03] ( 3, 6 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlTextReaderImpl+LaterInitParam>
+; V07 cse0 [V07,T05] ( 5, 4.50) ref -> r12 "CSE #02: aggressive"
+; V08 cse1 [V08,T06] ( 3, 1.50) ref -> rdi "CSE #01: moderate"
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M34797_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
- mov r15, rdi
- mov r12, rsi
- mov r14, rdx
- mov rbx, rcx
- mov r13, r8
- ;; size=34 bbWeight=1 PerfScore 8.00
+ push rax
+ lea rbp, [rsp+0x30]
+ mov gword ptr [rbp-0x30], rcx
+ mov rbx, rdi
+ mov r13, rsi
+ mov r15, rdx
+ mov r14, r8
+ ;; size=32 bbWeight=1 PerfScore 9.50
G_M34797_IG02:
- mov rsi, gword ptr [r14+0x10]
- mov rdi, r15
- mov rdx, r14
- mov rcx, r13
+ mov rsi, gword ptr [r15+0x10]
+ mov rdi, rbx
+ mov rdx, r15
+ mov rcx, r14
mov rax, 0xD1FFAB1E ; code for System.Xml.XmlTextReaderImpl:.ctor(System.Xml.XmlResolver,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext):this
call [rax]System.Xml.XmlTextReaderImpl:.ctor(System.Xml.XmlResolver,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext):this
- mov rdi, gword ptr [r14+0x10]
- test rbx, rbx
- je G_M34797_IG05
- ;; size=38 bbWeight=1 PerfScore 9.25
+ mov rsi, gword ptr [r15+0x10]
+ lea rdi, [rbp-0x30]
+ mov rax, 0xD1FFAB1E ; code for System.Xml.XmlTextReaderImpl:ConvertAbsoluteUnixPathToAbsoluteUri(byref,System.Xml.XmlResolver)
+ call [rax]System.Xml.XmlTextReaderImpl:ConvertAbsoluteUnixPathToAbsoluteUri(byref,System.Xml.XmlResolver)
+ test r14, r14
+ je SHORT G_M34797_IG04
+ ;; size=50 bbWeight=1 PerfScore 13.00
G_M34797_IG03:
- mov eax, dword ptr [rbx+0x08]
- test eax, eax
- jle G_M34797_IG05
- cmp word ptr [rbx+0x0C], 47
- jne SHORT G_M34797_IG05
+ mov rdi, gword ptr [r14+0x40]
test rdi, rdi
- jne SHORT G_M34797_IG04
- mov rdi, 0xD1FFAB1E ; System.Uri
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x30], rax
- mov rdi, rax
- mov rsi, rbx
- mov rcx, 0xD1FFAB1E ; code for System.Uri:.ctor(System.String):this
- call [rcx]System.Uri:.ctor(System.String):this
- mov rdi, gword ptr [rbp-0x30]
- mov rax, 0xD1FFAB1E ; code for System.Uri:ToString():System.String:this
- call [rax]System.Uri:ToString():System.String:this
- mov rbx, rax
- jmp SHORT G_M34797_IG05
- ;; size=81 bbWeight=0.50 PerfScore 10.50
+ cmove rdi, gword ptr [rbp-0x30]
+ mov gword ptr [rbp-0x30], rdi
+ ;; size=16 bbWeight=0.50 PerfScore 2.62
G_M34797_IG04:
- mov rdx, rbx
- xor rsi, rsi
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x40]
- call [rax+0x30]System.Xml.XmlResolver:ResolveUri(System.Uri,System.String):System.Uri:this
- mov gword ptr [rbp-0x38], rax
- mov rdi, rax
- mov rcx, 0xD1FFAB1E ; code for System.Uri:get_IsFile():ubyte:this
- cmp dword ptr [rdi], edi
- call [rcx]System.Uri:get_IsFile():ubyte:this
- test eax, eax
- je SHORT G_M34797_IG05
- mov rdi, gword ptr [rbp-0x38]
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x40]
- call [rax+0x08]System.Object:ToString():System.String:this
- mov rbx, rax
- ;; size=57 bbWeight=0.50 PerfScore 12.25
-G_M34797_IG05:
- test r13, r13
- je SHORT G_M34797_IG07
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M34797_IG06:
- mov rdi, gword ptr [r13+0x40]
- test rdi, rdi
- cmovne rbx, rdi
- ;; size=11 bbWeight=0.50 PerfScore 1.25
-G_M34797_IG07:
- lea rdi, bword ptr [r15+0x60]
- mov rsi, rbx
+ lea rdi, bword ptr [rbx+0x60]
+ mov rsi, gword ptr [rbp-0x30]
call CORINFO_HELP_ASSIGN_REF
- movzx rdi, byte ptr [r14+0x5D]
- mov byte ptr [r15+0x17D], dil
+ movzx rdi, byte ptr [r15+0x5D]
+ mov byte ptr [rbx+0x17D], dil
mov rdi, 0xD1FFAB1E ; System.Xml.XmlTextReaderImpl+LaterInitParam
call CORINFO_HELP_NEWSFAST
mov dword ptr [rax+0x44], 3
- lea rdi, bword ptr [r15+0x08]
+ lea rdi, bword ptr [rbx+0x08]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- mov rbx, gword ptr [r15+0x08]
- lea rdi, bword ptr [rbx+0x38]
- mov rsi, r12
- call CORINFO_HELP_ASSIGN_REF
- lea rdi, bword ptr [rbx+0x30]
+ mov r12, gword ptr [rbx+0x08]
+ lea rdi, bword ptr [r12+0x38]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
- mov dword ptr [rbx+0x44], 2
- cmp byte ptr [r14+0x58], 0
- je SHORT G_M34797_IG10
- ;; size=100 bbWeight=1 PerfScore 19.25
-G_M34797_IG08:
- mov byte ptr [rbx+0x48], 1
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M34797_IG09:
- add rsp, 24
+ lea rdi, bword ptr [r12+0x30]
+ mov rsi, r14
+ call CORINFO_HELP_ASSIGN_REF
+ mov dword ptr [r12+0x44], 2
+ cmp byte ptr [r15+0x58], 0
+ je SHORT G_M34797_IG07
+ ;; size=105 bbWeight=1 PerfScore 20.00
+G_M34797_IG05:
+ mov byte ptr [r12+0x48], 1
+ ;; size=6 bbWeight=0.50 PerfScore 0.50
+G_M34797_IG06:
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M34797_IG10:
- mov rdi, r15
+G_M34797_IG07:
+ mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Xml.XmlTextReaderImpl:FinishInitTextReader():this
call [rax]System.Xml.XmlTextReaderImpl:FinishInitTextReader():this
nop
;; size=16 bbWeight=0.50 PerfScore 1.88
-G_M34797_IG11:
- add rsp, 24
+G_M34797_IG08:
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-; Total bytes of code 376, prolog size 19, PerfScore 68.38, instruction count 105, allocated bytes for code 376 (MethodHash=55a37812) for method System.Xml.XmlTextReaderImpl:.ctor(System.IO.TextReader,System.Xml.XmlReaderSettings,System.String,System.Xml.XmlParserContext):this (FullOpts)
+; Total bytes of code 255, prolog size 16, PerfScore 51.75, instruction count 71, allocated bytes for code 255 (MethodHash=55a37812) for method System.Xml.XmlTextReaderImpl:.ctor(System.IO.TextReader,System.Xml.XmlReaderSettings,System.String,System.Xml.XmlParserContext):this (FullOpts) -90 (-23.75 % of base) - System.Xml.XmlTextReader:.ctor(System.String,System.IO.TextReader):this ; Assembly listing for method System.Xml.XmlTextReader:.ctor(System.String,System.IO.TextReader):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; 5 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Xml.XmlTextReader>
-; V01 arg1 [V01,T05] ( 4, 3.50) ref -> r15 class-hnd single-def <System.String>
-; V02 arg2 [V02,T07] ( 3, 3 ) ref -> r14 class-hnd single-def <System.IO.TextReader>
+; V00 this [V00,T02] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Xml.XmlTextReader>
+; V01 arg1 [V01,T04] ( 3, 3 ) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T05] ( 3, 3 ) ref -> r14 class-hnd single-def <System.IO.TextReader>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T00] ( 9, 18 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlTextReaderImpl>
-; V05 tmp2 [V05,T02] ( 4, 8 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Xml.NameTable>
-; V06 tmp3 [V06,T01] ( 6, 9 ) ref -> [rbp-0x30] ld-addr-op class-hnd "Inlining Arg" <System.String>
-; V07 tmp4 [V07,T04] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlNamespaceManager>
+; V05 tmp2 [V05,T01] ( 4, 8 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Xml.NameTable>
+; V06 tmp3 [V06 ] ( 4, 8 ) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.String>
+; V07 tmp4 [V07,T03] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlNamespaceManager>
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
-; V09 tmp6 [V09,T06] ( 5, 5 ) ref -> rsi
-; V10 tmp7 [V10,T08] ( 3, 3 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.Uri>
-;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlTextReaderImpl>
-; V13 cse0 [V13,T09] ( 2, 1 ) int -> rdi "CSE #01: moderate"
+; V09 tmp6 [V09,T06] ( 4, 4 ) ref -> rsi
+;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
+;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlTextReaderImpl>
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M36365_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
+ push rax
+ lea rbp, [rsp+0x30]
+ xor eax, eax
+ mov qword ptr [rbp-0x30], rax
mov rbx, rdi
mov r15, rsi
mov r14, rdx
- ;; size=28 bbWeight=1 PerfScore 7.50
+ ;; size=31 bbWeight=1 PerfScore 9.50
G_M36365_IG02:
mov rdi, 0xD1FFAB1E ; System.Xml.XmlTextReaderImpl
call CORINFO_HELP_NEWSFAST
mov r13, rax
mov rdi, 0xD1FFAB1E ; System.Xml.NameTable
call CORINFO_HELP_NEWSFAST
mov r12, rax
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Xml.NameTable:.ctor():this
call [rax]System.Xml.NameTable:.ctor():this
mov gword ptr [rbp-0x30], r15
mov rdi, r13
mov rsi, r12
mov rax, 0xD1FFAB1E ; code for System.Xml.XmlTextReaderImpl:.ctor(System.Xml.XmlNameTable):this
call [rax]System.Xml.XmlTextReaderImpl:.ctor(System.Xml.XmlNameTable):this
- mov rsi, gword ptr [rbp-0x30]
- test rsi, rsi
- je G_M36365_IG07
- ;; size=86 bbWeight=1 PerfScore 13.50
-G_M36365_IG03:
- mov edi, dword ptr [rsi+0x08]
- test edi, edi
- jle G_M36365_IG06
- cmp word ptr [rsi+0x0C], 47
- mov gword ptr [rbp-0x30], rsi
- jne SHORT G_M36365_IG04
- mov rdi, 0xD1FFAB1E ; System.Uri
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x38], rax
- mov rdi, rax
- mov rsi, r15
- mov rcx, 0xD1FFAB1E ; code for System.Uri:.ctor(System.String):this
- call [rcx]System.Uri:.ctor(System.String):this
- mov rdi, gword ptr [rbp-0x38]
- mov rax, 0xD1FFAB1E ; code for System.Uri:ToString():System.String:this
- call [rax]System.Uri:ToString():System.String:this
- mov gword ptr [rbp-0x30], rax
- ;; size=79 bbWeight=0.50 PerfScore 9.75
-G_M36365_IG04:
+ lea rdi, [rbp-0x30]
+ xor rsi, rsi
+ mov rax, 0xD1FFAB1E ; code for System.Xml.XmlTextReaderImpl:ConvertAbsoluteUnixPathToAbsoluteUri(byref,System.Xml.XmlResolver)
+ call [rax]System.Xml.XmlTextReaderImpl:ConvertAbsoluteUnixPathToAbsoluteUri(byref,System.Xml.XmlResolver)
mov rdi, 0xD1FFAB1E ; System.Xml.XmlNamespaceManager
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rdi, r15
mov rsi, r12
mov rax, 0xD1FFAB1E ; code for System.Xml.XmlNamespaceManager:.ctor(System.Xml.XmlNameTable):this
call [rax]System.Xml.XmlNamespaceManager:.ctor(System.Xml.XmlNameTable):this
lea rdi, bword ptr [r13+0x40]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
- mov r15, gword ptr [rbp-0x30]
- mov rsi, r15
+ mov rsi, gword ptr [rbp-0x30]
mov rdi, 0xD1FFAB1E ; ''
- test rsi, rsi
+ cmp gword ptr [rbp-0x30], 0
cmove rsi, rdi
lea rdi, bword ptr [r13+0x60]
call CORINFO_HELP_ASSIGN_REF
mov rsi, gword ptr [r13+0x60]
mov rdi, r13
mov rcx, r14
xor rdx, rdx
mov rax, 0xD1FFAB1E ; code for System.Xml.XmlTextReaderImpl:InitTextReaderInput(System.String,System.Uri,System.IO.TextReader):this
call [rax]System.Xml.XmlTextReaderImpl:InitTextReaderInput(System.String,System.Uri,System.IO.TextReader):this
mov rsi, gword ptr [r13+0x190]
lea rdi, bword ptr [r13+0x68]
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [rbx+0x08]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
mov rdi, gword ptr [rbx+0x08]
lea rdi, bword ptr [rdi+0xC8]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
nop
- ;; size=153 bbWeight=1 PerfScore 25.75
-G_M36365_IG05:
- add rsp, 24
+ ;; size=243 bbWeight=1 PerfScore 42.50
+G_M36365_IG03:
+ add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M36365_IG06:
- mov gword ptr [rbp-0x30], rsi
- jmp G_M36365_IG04
- ;; size=9 bbWeight=0.25 PerfScore 0.75
-G_M36365_IG07:
- mov gword ptr [rbp-0x30], rsi
- jmp G_M36365_IG04
- ;; size=9 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 379, prolog size 19, PerfScore 63.00, instruction count 91, allocated bytes for code 379 (MethodHash=126571f2) for method System.Xml.XmlTextReader:.ctor(System.String,System.IO.TextReader):this (FullOpts)
+; Total bytes of code 289, prolog size 22, PerfScore 56.25, instruction count 72, allocated bytes for code 289 (MethodHash=126571f2) for method System.Xml.XmlTextReader:.ctor(System.String,System.IO.TextReader):this (FullOpts) -83 (-10.77 % of base) - System.Xml.Xsl.XsltOld.Compiler:ResolveDocument(System.Uri):System.Xml.Xsl.XsltOld.NavigatorInput:this ; Assembly listing for method System.Xml.Xsl.XsltOld.Compiler:ResolveDocument(System.Uri):System.Xml.Xsl.XsltOld.NavigatorInput: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; 8 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 8 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 6, 4.50) ref -> r15 this class-hnd single-def <System.Xml.Xsl.XsltOld.Compiler>
-; V01 arg1 [V01,T02] ( 5, 5 ) ref -> rbx class-hnd single-def <System.Uri>
-; V02 loc0 [V02,T07] ( 5, 3.50) ref -> r14 class-hnd single-def <System.Object>
-; V03 loc1 [V03,T08] ( 6, 3 ) ref -> rbx class-hnd exact single-def <System.String>
+; V00 this [V00,T02] ( 6, 4.50) ref -> r15 this class-hnd single-def <System.Xml.Xsl.XsltOld.Compiler>
+; V01 arg1 [V01,T01] ( 5, 5 ) ref -> rbx class-hnd single-def <System.Uri>
+; V02 loc0 [V02,T06] ( 5, 3.50) ref -> r14 class-hnd single-def <System.Object>
+; V03 loc1 [V03,T13] ( 5, 2.50) ref -> rbx class-hnd exact single-def <System.String>
; V04 OutArgs [V04 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T20] ( 3, 0 ) ref -> r14 class-hnd exact single-def "dup spill" <System.String[]>
-; V06 tmp2 [V06,T21] ( 2, 0 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.String>
-; V07 tmp3 [V07,T09] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Xml.Xsl.XsltOld.NavigatorInput>
+; V05 tmp1 [V05,T19] ( 3, 0 ) ref -> r14 class-hnd exact single-def "dup spill" <System.String[]>
+; V06 tmp2 [V06,T20] ( 2, 0 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.String>
+; V07 tmp3 [V07,T07] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Xml.Xsl.XsltOld.NavigatorInput>
; V08 tmp4 [V08,T00] ( 11, 11 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlTextReaderImpl>
-; V09 tmp5 [V09,T10] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Xml.Xsl.XsltOld.NavigatorInput>
-; V10 tmp6 [V10,T11] ( 3, 3 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.IO.Stream>
-; V11 tmp7 [V11,T06] ( 4, 4 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Xml.NameTable>
-; V12 tmp8 [V12,T01] ( 8, 8 ) ref -> [rbp-0x30] ld-addr-op class-hnd "Inlining Arg" <System.String>
-; V13 tmp9 [V13,T12] ( 3, 3 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.Xml.XmlNamespaceManager>
-; V14 tmp10 [V14,T13] ( 3, 3 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <System.Uri>
-;* V15 tmp11 [V15,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
-;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V18 tmp14 [V18,T14] ( 3, 3 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Xml.XPath.XPathDocument>
-; V19 tmp15 [V19,T04] ( 6, 6 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <MS.Internal.Xml.Cache.XPathDocumentNavigator>
-; V20 tmp16 [V20,T15] ( 2, 2 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <MS.Internal.Xml.Cache.XPathNode[]>
-; V21 tmp17 [V21,T17] ( 2, 2 ) int -> r14 "Inlining Arg"
-; V22 tmp18 [V22,T05] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
-; V23 tmp19 [V23,T16] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V24 cse0 [V24,T18] ( 2, 1 ) int -> rdi "CSE #01: moderate"
+; V09 tmp5 [V09,T08] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Xml.Xsl.XsltOld.NavigatorInput>
+; V10 tmp6 [V10,T09] ( 3, 3 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.IO.Stream>
+; V11 tmp7 [V11,T05] ( 4, 4 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Xml.NameTable>
+; V12 tmp8 [V12 ] ( 4, 4 ) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.String>
+; V13 tmp9 [V13,T10] ( 3, 3 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.Xml.XmlNamespaceManager>
+;* V14 tmp10 [V14,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V15 tmp11 [V15,T11] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.String>
+; V16 tmp12 [V16,T14] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
+; V17 tmp13 [V17,T12] ( 3, 3 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Xml.XPath.XPathDocument>
+; V18 tmp14 [V18,T03] ( 6, 6 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <MS.Internal.Xml.Cache.XPathDocumentNavigator>
+; V19 tmp15 [V19,T15] ( 2, 2 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <MS.Internal.Xml.Cache.XPathNode[]>
+; V20 tmp16 [V20,T17] ( 2, 2 ) int -> r14 "Inlining Arg"
+; V21 tmp17 [V21,T04] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
+; V22 tmp18 [V22,T16] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
;
-; Lcl frame size = 40
+; Lcl frame size = 24
G_M26771_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 40
- lea rbp, [rsp+0x50]
+ sub rsp, 24
+ lea rbp, [rsp+0x40]
+ xor eax, eax
+ mov qword ptr [rbp-0x30], rax
mov r15, rdi
mov rbx, rsi
- ;; size=25 bbWeight=1 PerfScore 7.25
+ ;; size=31 bbWeight=1 PerfScore 8.50
G_M26771_IG02:
mov rdi, gword ptr [r15+0x18]
mov rsi, rbx
xor rdx, rdx
xor rcx, rcx
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x20]System.Xml.XmlResolver:GetEntity(System.Uri,System.String,System.Type):System.Object:this
mov r14, rax
mov rdi, rbx
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x40]
call [rax+0x08]System.Object:ToString():System.String:this
mov rbx, rax
mov rsi, r14
mov rdi, 0xD1FFAB1E ; System.IO.Stream
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
jne SHORT G_M26771_IG05
;; size=70 bbWeight=1 PerfScore 22.50
G_M26771_IG03:
mov rsi, r14
mov rdi, 0xD1FFAB1E ; System.Xml.XPath.XPathNavigator
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
- je G_M26771_IG14
+ je G_M26771_IG10
mov rdi, 0xD1FFAB1E ; System.Xml.Xsl.XsltOld.NavigatorInput
call CORINFO_HELP_NEWSFAST
mov r13, rax
mov rsi, r14
mov rcx, gword ptr [r15+0x10]
mov rdi, r13
mov rdx, rbx
mov rax, 0xD1FFAB1E ; code for System.Xml.Xsl.XsltOld.NavigatorInput:.ctor(System.Xml.XPath.XPathNavigator,System.String,System.Xml.Xsl.XsltOld.InputScope):this
call [rax]System.Xml.Xsl.XsltOld.NavigatorInput:.ctor(System.Xml.XPath.XPathNavigator,System.String,System.Xml.Xsl.XsltOld.InputScope):this
mov rax, r13
;; size=80 bbWeight=0.50 PerfScore 6.38
G_M26771_IG04:
- add rsp, 40
+ add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M26771_IG05:
mov rdi, 0xD1FFAB1E ; System.Xml.XmlTextReaderImpl
call CORINFO_HELP_NEWSFAST
mov r13, rax
mov rdi, 0xD1FFAB1E ; System.Xml.NameTable
call CORINFO_HELP_NEWSFAST
mov r12, rax
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Xml.NameTable:.ctor():this
call [rax]System.Xml.NameTable:.ctor():this
mov gword ptr [rbp-0x30], rbx
mov rdi, r13
mov rsi, r12
- mov rcx, 0xD1FFAB1E ; code for System.Xml.XmlTextReaderImpl:.ctor(System.Xml.XmlNameTable):this
- call [rcx]System.Xml.XmlTextReaderImpl:.ctor(System.Xml.XmlNameTable):this
- mov rax, gword ptr [rbp-0x30]
- test rax, rax
- je G_M26771_IG08
- mov edi, dword ptr [rax+0x08]
- test edi, edi
- jle G_M26771_IG07
- cmp word ptr [rax+0x0C], 47
- mov gword ptr [rbp-0x30], rax
- jne SHORT G_M26771_IG06
- mov rdi, 0xD1FFAB1E ; System.Uri
- call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x40], rax
- mov rdi, rax
- mov rsi, rbx
- mov rcx, 0xD1FFAB1E ; code for System.Uri:.ctor(System.String):this
- call [rcx]System.Uri:.ctor(System.String):this
- mov rdi, gword ptr [rbp-0x40]
- mov rax, 0xD1FFAB1E ; code for System.Uri:ToString():System.String:this
- call [rax]System.Uri:ToString():System.String:this
- mov gword ptr [rbp-0x30], rax
- ;; size=165 bbWeight=0.50 PerfScore 16.50
-G_M26771_IG06:
+ mov rax, 0xD1FFAB1E ; code for System.Xml.XmlTextReaderImpl:.ctor(System.Xml.XmlNameTable):this
+ call [rax]System.Xml.XmlTextReaderImpl:.ctor(System.Xml.XmlNameTable):this
+ lea rdi, [rbp-0x30]
+ xor rsi, rsi
+ mov rax, 0xD1FFAB1E ; code for System.Xml.XmlTextReaderImpl:ConvertAbsoluteUnixPathToAbsoluteUri(byref,System.Xml.XmlResolver)
+ call [rax]System.Xml.XmlTextReaderImpl:ConvertAbsoluteUnixPathToAbsoluteUri(byref,System.Xml.XmlResolver)
mov rdi, 0xD1FFAB1E ; System.Xml.XmlNamespaceManager
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x38], rax
mov rdi, rax
mov rsi, r12
mov rcx, 0xD1FFAB1E ; code for System.Xml.XmlNamespaceManager:.ctor(System.Xml.XmlNameTable):this
call [rcx]System.Xml.XmlNamespaceManager:.ctor(System.Xml.XmlNameTable):this
lea rdi, bword ptr [r13+0x40]
mov rsi, gword ptr [rbp-0x38]
call CORINFO_HELP_ASSIGN_REF
- mov r12, gword ptr [rbp-0x30]
- test r12, r12
- je SHORT G_M26771_IG10
- cmp dword ptr [r12+0x08], 0
- jne SHORT G_M26771_IG09
- jmp SHORT G_M26771_IG10
- ;; size=69 bbWeight=0.50 PerfScore 8.38
-G_M26771_IG07:
- mov gword ptr [rbp-0x30], rax
- jmp SHORT G_M26771_IG06
- ;; size=6 bbWeight=0.25 PerfScore 0.75
-G_M26771_IG08:
- mov gword ptr [rbp-0x30], rax
- jmp SHORT G_M26771_IG06
- ;; size=6 bbWeight=0.25 PerfScore 0.75
-G_M26771_IG09:
+ mov rdi, gword ptr [rbp-0x30]
+ test rdi, rdi
+ je SHORT G_M26771_IG06
+ cmp dword ptr [rdi+0x08], 0
+ je SHORT G_M26771_IG06
+ mov rdx, gword ptr [rbp-0x30]
xor rdi, rdi
mov gword ptr [rsp], rdi
mov rdi, r13
mov rcx, r14
- mov rdx, r12
xor rsi, rsi
xor r8, r8
xor r9d, r9d
mov rax, 0xD1FFAB1E ; code for System.Xml.XmlTextReaderImpl:InitStreamInput(System.Uri,System.String,System.IO.Stream,ubyte[],int,System.Text.Encoding):this
call [rax]System.Xml.XmlTextReaderImpl:InitStreamInput(System.Uri,System.String,System.IO.Stream,ubyte[],int,System.Text.Encoding):this
- jmp SHORT G_M26771_IG11
- ;; size=37 bbWeight=0.50 PerfScore 4.00
-G_M26771_IG10:
+ jmp SHORT G_M26771_IG07
+ ;; size=194 bbWeight=0.50 PerfScore 19.38
+G_M26771_IG06:
xor rdi, rdi
mov gword ptr [rsp], rdi
mov rdi, r13
mov rcx, r14
xor rsi, rsi
mov rdx, 0xD1FFAB1E ; ''
xor r8, r8
xor r9d, r9d
mov rax, 0xD1FFAB1E ; code for System.Xml.XmlTextReaderImpl:InitStreamInput(System.Uri,System.String,System.IO.Stream,ubyte[],int,System.Text.Encoding):this
call [rax]System.Xml.XmlTextReaderImpl:InitStreamInput(System.Uri,System.String,System.IO.Stream,ubyte[],int,System.Text.Encoding):this
;; size=42 bbWeight=0.50 PerfScore 3.00
-G_M26771_IG11:
+G_M26771_IG07:
mov rsi, gword ptr [r13+0x1B8]
lea rdi, bword ptr [r13+0x60]
call CORINFO_HELP_ASSIGN_REF
mov rsi, gword ptr [r13+0x190]
lea rdi, bword ptr [r13+0x68]
call CORINFO_HELP_ASSIGN_REF
mov rsi, gword ptr [r15+0x18]
mov rdi, r13
mov rax, 0xD1FFAB1E ; code for System.Xml.XmlTextReaderImpl:set_XmlResolver(System.Xml.XmlResolver):this
call [rax]System.Xml.XmlTextReaderImpl:set_XmlResolver(System.Xml.XmlResolver):this
mov rdi, r13
mov rax, 0xD1FFAB1E ; code for System.Xml.Xsl.XsltOld.Compiler:LoadDocument(System.Xml.XmlTextReaderImpl):System.Xml.XPath.XPathDocument
call [rax]System.Xml.Xsl.XsltOld.Compiler:LoadDocument(System.Xml.XmlTextReaderImpl):System.Xml.XPath.XPathDocument
mov r14, rax
mov rdi, 0xD1FFAB1E ; MS.Internal.Xml.Cache.XPathDocumentNavigator
call CORINFO_HELP_NEWSFAST
mov r13, rax
mov rsi, gword ptr [r14+0x10]
mov r14d, dword ptr [r14+0x3C]
lea rdi, bword ptr [r13+0x08]
call CORINFO_HELP_ASSIGN_REF
xor rdi, rdi
mov gword ptr [r13+0x10], rdi
mov dword ptr [r13+0x20], r14d
;; size=114 bbWeight=0.50 PerfScore 12.75
-G_M26771_IG12:
+G_M26771_IG08:
mov dword ptr [r13+0x24], edi
mov rdi, 0xD1FFAB1E ; System.Xml.Xsl.XsltOld.NavigatorInput
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rcx, gword ptr [r15+0x10]
mov rdi, r14
mov rsi, r13
mov rdx, rbx
mov rax, 0xD1FFAB1E ; code for System.Xml.Xsl.XsltOld.NavigatorInput:.ctor(System.Xml.XPath.XPathNavigator,System.String,System.Xml.Xsl.XsltOld.InputScope):this
call [rax]System.Xml.Xsl.XsltOld.NavigatorInput:.ctor(System.Xml.XPath.XPathNavigator,System.String,System.Xml.Xsl.XsltOld.InputScope):this
mov rax, r14
;; size=50 bbWeight=0.50 PerfScore 4.38
-G_M26771_IG13:
- add rsp, 40
+G_M26771_IG09:
+ add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M26771_IG14:
+G_M26771_IG10:
mov rax, 0xD1FFAB1E ; code for System.SR:get_Xslt_CantResolve():System.String
call [rax]System.SR:get_Xslt_CantResolve():System.String
mov r15, rax
mov rdi, 0xD1FFAB1E ; System.String[]
mov esi, 1
call CORINFO_HELP_NEWARR_1_OBJ
mov r14, rax
lea rdi, bword ptr [r14+0x10]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov rdi, r15
mov rsi, r14
mov rax, 0xD1FFAB1E ; code for System.Xml.Xsl.XsltException:Create(System.String,System.String[]):System.Xml.Xsl.XsltException
call [rax]System.Xml.Xsl.XsltException:Create(System.String,System.String[]):System.Xml.Xsl.XsltException
mov rdi, rax
call CORINFO_HELP_THROW
int3
;; size=77 bbWeight=0 PerfScore 0.00
-; Total bytes of code 771, prolog size 19, PerfScore 90.88, instruction count 188, allocated bytes for code 771 (MethodHash=9d3b976c) for method System.Xml.Xsl.XsltOld.Compiler:ResolveDocument(System.Uri):System.Xml.Xsl.XsltOld.NavigatorInput:this (FullOpts)
+; Total bytes of code 688, prolog size 25, PerfScore 81.12, instruction count 169, allocated bytes for code 688 (MethodHash=9d3b976c) for method System.Xml.Xsl.XsltOld.Compiler:ResolveDocument(System.Uri):System.Xml.Xsl.XsltOld.NavigatorInput:this (FullOpts) Larger list of diffs: https://gist.github.com/MihuBot/c1e36710b222409987086cd0034f8c0e |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 19 minutes.
https://github.com/MihaZupan/runtime/tree/span-startsWith
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: