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] [MichalPetryka] Non-PGO calli/delegate call transformation #781
Comments
Top method regressions111 (264.29 % of base) - System.Resources.Extensions.BinaryFormat.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type) ; Assembly listing for method System.Resources.Extensions.BinaryFormat.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type) (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
-; rsp based frame
-; fully interruptible
+; rbp based frame
+; partially interruptible
; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rdi class-hnd single-def <System.Runtime.Serialization.SerializationInfo>
-; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r8 class-hnd single-def <System.String>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rax class-hnd single-def <System.Object>
-; V03 arg3 [V03,T04] ( 3, 3 ) ref -> r9 class-hnd single-def <System.Type>
+; V00 arg0 [V00,T00] ( 6, 4.50) ref -> rbx class-hnd single-def <System.Runtime.Serialization.SerializationInfo>
+; V01 arg1 [V01,T01] ( 4, 3.50) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T02] ( 4, 3 ) ref -> r14 class-hnd single-def <System.Object>
+; V03 arg3 [V03,T03] ( 4, 3 ) ref -> r13 class-hnd single-def <System.Type>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 rat0 [V05,T00] ( 3, 6 ) ref -> r10 "delegate invoke call"
+; V05 tmp1 [V05,T04] ( 4, 3 ) int -> r12 "Inline stloc first use temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M13005_IG01:
- mov r8, rsi
- mov rax, rdx
- mov r9, rcx
- ;; size=9 bbWeight=1 PerfScore 0.75
+ push rbp
+ push r15
+ push r14
+ push r13
+ push r12
+ push rbx
+ push rax
+ lea rbp, [rsp+0x30]
+ mov rbx, rdi
+ mov r15, rsi
+ mov r14, rdx
+ mov r13, rcx
+ ;; size=28 bbWeight=1 PerfScore 8.50
G_M13005_IG02:
- mov rsi, 0xD1FFAB1E ; const ptr
- mov r10, gword ptr [rsi]
- mov rsi, rdi
- mov rdx, r8
- mov rcx, rax
- mov r8, r9
- mov rdi, gword ptr [r10+0x08]
- ;; size=29 bbWeight=1 PerfScore 5.25
+ mov rdi, rbx
+ mov rsi, r15
+ mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.SerializationInfo:FindElement(System.String):int:this
+ call [rax]System.Runtime.Serialization.SerializationInfo:FindElement(System.String):int:this
+ mov r12d, eax
+ test r12d, r12d
+ jl SHORT G_M13005_IG05
+ ;; size=26 bbWeight=1 PerfScore 5.25
G_M13005_IG03:
- tail.jmp [r10+0x18]System.Action`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.__Canon,System.__Canon,System.__Canon,System.__Canon):this
- ;; size=4 bbWeight=1 PerfScore 2.00
+ mov rdi, gword ptr [rbx+0x10]
+ movsxd rsi, r12d
+ mov rdx, r14
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
+ call [rax]CORINFO_HELP_ARRADDR_ST
+ mov rdi, gword ptr [rbx+0x18]
+ movsxd rsi, r12d
+ mov rdx, r13
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
+ call [rax]CORINFO_HELP_ARRADDR_ST
+ nop
+ ;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M13005_IG04:
+ 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_M13005_IG05:
+ mov rdi, rbx
+ mov rsi, r15
+ mov rdx, r14
+ mov rcx, r13
+ mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.SerializationInfo:AddValueInternal(System.String,System.Object,System.Type):this
+ ;; size=22 bbWeight=0.50 PerfScore 0.62
+G_M13005_IG06:
+ add rsp, 8
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ tail.jmp [rax]System.Runtime.Serialization.SerializationInfo:AddValueInternal(System.String,System.Object,System.Type):this
+ ;; size=17 bbWeight=0.50 PerfScore 2.62
-; Total bytes of code 42, prolog size 9, PerfScore 8.00, instruction count 11, allocated bytes for code 42 (MethodHash=8b40cd32) for method System.Resources.Extensions.BinaryFormat.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type) (FullOpts)
+; Total bytes of code 153, prolog size 16, PerfScore 25.00, instruction count 51, allocated bytes for code 153 (MethodHash=8b40cd32) for method System.Resources.Extensions.BinaryFormat.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type) (FullOpts)
; ============================================================ 111 (264.29 % of base) - System.Runtime.Serialization.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type) ; Assembly listing for method System.Runtime.Serialization.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type) (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
-; rsp based frame
-; fully interruptible
+; rbp based frame
+; partially interruptible
; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rdi class-hnd single-def <System.Runtime.Serialization.SerializationInfo>
-; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r8 class-hnd single-def <System.String>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rax class-hnd single-def <System.Object>
-; V03 arg3 [V03,T04] ( 3, 3 ) ref -> r9 class-hnd single-def <System.Type>
+; V00 arg0 [V00,T00] ( 6, 4.50) ref -> rbx class-hnd single-def <System.Runtime.Serialization.SerializationInfo>
+; V01 arg1 [V01,T01] ( 4, 3.50) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T02] ( 4, 3 ) ref -> r14 class-hnd single-def <System.Object>
+; V03 arg3 [V03,T03] ( 4, 3 ) ref -> r13 class-hnd single-def <System.Type>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 rat0 [V05,T00] ( 3, 6 ) ref -> r10 "delegate invoke call"
+; V05 tmp1 [V05,T04] ( 4, 3 ) int -> r12 "Inline stloc first use temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M23470_IG01:
- mov r8, rsi
- mov rax, rdx
- mov r9, rcx
- ;; size=9 bbWeight=1 PerfScore 0.75
+ push rbp
+ push r15
+ push r14
+ push r13
+ push r12
+ push rbx
+ push rax
+ lea rbp, [rsp+0x30]
+ mov rbx, rdi
+ mov r15, rsi
+ mov r14, rdx
+ mov r13, rcx
+ ;; size=28 bbWeight=1 PerfScore 8.50
G_M23470_IG02:
- mov rsi, 0xD1FFAB1E ; const ptr
- mov r10, gword ptr [rsi]
- mov rsi, rdi
- mov rdx, r8
- mov rcx, rax
- mov r8, r9
- mov rdi, gword ptr [r10+0x08]
- ;; size=29 bbWeight=1 PerfScore 5.25
+ mov rdi, rbx
+ mov rsi, r15
+ mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.SerializationInfo:FindElement(System.String):int:this
+ call [rax]System.Runtime.Serialization.SerializationInfo:FindElement(System.String):int:this
+ mov r12d, eax
+ test r12d, r12d
+ jl SHORT G_M23470_IG05
+ ;; size=26 bbWeight=1 PerfScore 5.25
G_M23470_IG03:
- tail.jmp [r10+0x18]System.Action`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.__Canon,System.__Canon,System.__Canon,System.__Canon):this
- ;; size=4 bbWeight=1 PerfScore 2.00
+ mov rdi, gword ptr [rbx+0x10]
+ movsxd rsi, r12d
+ mov rdx, r14
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
+ call [rax]CORINFO_HELP_ARRADDR_ST
+ mov rdi, gword ptr [rbx+0x18]
+ movsxd rsi, r12d
+ mov rdx, r13
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
+ call [rax]CORINFO_HELP_ARRADDR_ST
+ nop
+ ;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M23470_IG04:
+ 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_M23470_IG05:
+ mov rdi, rbx
+ mov rsi, r15
+ mov rdx, r14
+ mov rcx, r13
+ mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.SerializationInfo:AddValueInternal(System.String,System.Object,System.Type):this
+ ;; size=22 bbWeight=0.50 PerfScore 0.62
+G_M23470_IG06:
+ add rsp, 8
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ tail.jmp [rax]System.Runtime.Serialization.SerializationInfo:AddValueInternal(System.String,System.Object,System.Type):this
+ ;; size=17 bbWeight=0.50 PerfScore 2.62
-; Total bytes of code 42, prolog size 9, PerfScore 8.00, instruction count 11, allocated bytes for code 42 (MethodHash=36f5a451) for method System.Runtime.Serialization.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type) (FullOpts)
+; Total bytes of code 153, prolog size 16, PerfScore 25.00, instruction count 51, allocated bytes for code 153 (MethodHash=36f5a451) for method System.Runtime.Serialization.SerializationInfoExtensions:UpdateValue(System.Runtime.Serialization.SerializationInfo,System.String,System.Object,System.Type) (FullOpts)
; ============================================================ 89 (86.41 % of base) - System.Resources.Extensions.BinaryFormat.Deserializer.SerializationInfoValueUpdater:UpdateValue(System.Collections.Generic.IDictionary`2[System.Formats.Nrbf.SerializationRecordId,System.Object]):this ; Assembly listing for method System.Resources.Extensions.BinaryFormat.Deserializer.SerializationInfoValueUpdater:UpdateValue(System.Collections.Generic.IDictionary`2[System.Formats.Nrbf.SerializationRecordId,System.Object]):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; 2 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Resources.Extensions.BinaryFormat.Deserializer.SerializationInfoValueUpdater>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd single-def <System.Collections.Generic.IDictionary`2[System.Formats.Nrbf.SerializationRecordId,System.Object]>
-; V02 loc0 [V02,T06] ( 3, 3 ) ref -> r15 class-hnd single-def <System.__Canon>
+; V02 loc0 [V02,T05] ( 4, 3 ) ref -> r15 class-hnd single-def <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Formats.Nrbf.SerializationRecordId>
-;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Runtime.Serialization.SerializationInfo>
-;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
-;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "field V04._id (fldOffset=0x0)" P-INDEP
-; V09 tmp6 [V09,T03] ( 2, 4 ) ref -> r8 single-def "argument with side effect"
-; V10 tmp7 [V10,T04] ( 2, 4 ) ref -> r14 single-def "argument with side effect"
-; V11 tmp8 [V11,T05] ( 2, 4 ) ref -> rbx single-def "argument with side effect"
-; V12 rat0 [V12,T01] ( 3, 6 ) ref -> rax "delegate invoke call"
+; V05 tmp2 [V05,T01] ( 5, 7 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Runtime.Serialization.SerializationInfo>
+; V06 tmp3 [V06,T03] ( 3, 5 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String>
+; V07 tmp4 [V07,T04] ( 3, 4 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <System.RuntimeType>
+; V08 tmp5 [V08,T06] ( 4, 3 ) int -> r12 single-def "Inline stloc first use temp"
+;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "field V04._id (fldOffset=0x0)" P-INDEP
;
; Lcl frame size = 8
G_M5755_IG01:
push rbp
push r15
push r14
+ push r13
+ push r12
push rbx
push rax
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x30]
mov rbx, rdi
mov rdi, rsi
- ;; size=18 bbWeight=1 PerfScore 6.00
+ ;; size=22 bbWeight=1 PerfScore 8.00
G_M5755_IG02:
mov esi, dword ptr [rbx+0x08]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IDictionary`2[System.Formats.Nrbf.SerializationRecordId,System.__Canon]:get_Item(System.Formats.Nrbf.SerializationRecordId):System.__Canon:this
call [r11]System.Collections.Generic.IDictionary`2[System.Formats.Nrbf.SerializationRecordId,System.__Canon]:get_Item(System.Formats.Nrbf.SerializationRecordId):System.__Canon:this
mov r15, rax
mov r14, gword ptr [rbx+0x10]
mov rbx, gword ptr [rbx+0x18]
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Object:GetType():System.Type:this
call [rax]System.Object:GetType():System.Type:this
- mov r8, rax
- mov rsi, r14
- mov rdx, rbx
- mov rcx, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rcx]
- mov rcx, r15
- mov rdi, gword ptr [rax+0x08]
- ;; size=71 bbWeight=1 PerfScore 18.25
+ mov r13, rax
+ mov rdi, r14
+ mov rsi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.SerializationInfo:FindElement(System.String):int:this
+ call [rax]System.Runtime.Serialization.SerializationInfo:FindElement(System.String):int:this
+ mov r12d, eax
+ test r12d, r12d
+ jl SHORT G_M5755_IG05
+ ;; size=71 bbWeight=1 PerfScore 18.50
G_M5755_IG03:
+ mov rdi, gword ptr [r14+0x10]
+ movsxd rsi, r12d
+ mov rdx, r15
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
+ call [rax]CORINFO_HELP_ARRADDR_ST
+ mov rdi, gword ptr [r14+0x18]
+ movsxd rsi, r12d
+ mov rdx, r13
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
+ call [rax]CORINFO_HELP_ARRADDR_ST
+ nop
+ ;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M5755_IG04:
add rsp, 8
pop rbx
+ pop r12
+ pop r13
pop r14
pop r15
pop rbp
- tail.jmp [rax+0x18]System.Action`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.__Canon,System.__Canon,System.__Canon,System.__Canon):this
- ;; size=14 bbWeight=1 PerfScore 4.25
+ ret
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M5755_IG05:
+ mov rdi, r14
+ mov rsi, rbx
+ mov rdx, r15
+ mov rcx, r13
+ mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.SerializationInfo:AddValueInternal(System.String,System.Object,System.Type):this
+ ;; size=22 bbWeight=0.50 PerfScore 0.62
+G_M5755_IG06:
+ add rsp, 8
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ tail.jmp [rax]System.Runtime.Serialization.SerializationInfo:AddValueInternal(System.String,System.Object,System.Type):this
+ ;; size=17 bbWeight=0.50 PerfScore 2.62
-; Total bytes of code 103, prolog size 12, PerfScore 28.50, instruction count 30, allocated bytes for code 103 (MethodHash=ba42e984) for method System.Resources.Extensions.BinaryFormat.Deserializer.SerializationInfoValueUpdater:UpdateValue(System.Collections.Generic.IDictionary`2[System.Formats.Nrbf.SerializationRecordId,System.Object]):this (FullOpts)
+; Total bytes of code 192, prolog size 16, PerfScore 37.75, instruction count 59, allocated bytes for code 192 (MethodHash=ba42e984) for method System.Resources.Extensions.BinaryFormat.Deserializer.SerializationInfoValueUpdater:UpdateValue(System.Collections.Generic.IDictionary`2[System.Formats.Nrbf.SerializationRecordId,System.Object]):this (FullOpts)
; ============================================================ 54 (48.21 % of base) - System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoArrayType:this ; Assembly listing for method System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoArrayType:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; fully interruptible
; No PGO data
+; 0 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 3, 2.50) ref -> r15 this class-hnd single-def <System.Reflection.TypeLoading.RoModule>
-; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <System.Reflection.TypeLoading.RoType>
+; V00 this [V00,T02] ( 3, 2.50) ref -> r15 this class-hnd single-def <System.Reflection.TypeLoading.RoModule>
+; V01 arg1 [V01,T01] ( 5, 4 ) ref -> rbx class-hnd single-def <System.Reflection.TypeLoading.RoType>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 rat0 [V03,T02] ( 3, 3 ) ref -> rax "delegate invoke call"
+; V03 tmp1 [V03,T00] ( 7, 7 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TypeLoading.RoArrayType>
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M23311_IG01:
- push rbp
push r15
push rbx
- lea rbp, [rsp+0x10]
+ push rax
mov r15, rdi
mov rbx, rsi
- ;; size=15 bbWeight=1 PerfScore 4.00
+ ;; size=10 bbWeight=1 PerfScore 3.50
G_M23311_IG02:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Reflection.RoModifiedType
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
je SHORT G_M23311_IG05
;; size=30 bbWeight=1 PerfScore 5.00
G_M23311_IG03:
- mov rsi, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rsi]
+ mov rdi, 0xD1FFAB1E ; System.Reflection.TypeLoading.RoArrayType
+ call CORINFO_HELP_NEWSFAST
+ mov r15, rax
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rdi]
+ lea rdi, bword ptr [r15+0x38]
+ call CORINFO_HELP_ASSIGN_REF
+ mov dword ptr [r15+0x50], -1
+ lea rdi, bword ptr [r15+0x60]
mov rsi, rbx
- mov rdi, gword ptr [rax+0x08]
- ;; size=20 bbWeight=0.50 PerfScore 2.25
+ call CORINFO_HELP_ASSIGN_REF
+ mov byte ptr [r15+0x6C], 0
+ mov dword ptr [r15+0x68], 1
+ mov rax, r15
+ ;; size=76 bbWeight=0.50 PerfScore 5.12
G_M23311_IG04:
+ add rsp, 8
pop rbx
pop r15
- pop rbp
- tail.jmp [rax+0x18]System.Func`2[System.__Canon,System.__Canon]:Invoke(System.__Canon):System.__Canon:this
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ret
+ ;; size=8 bbWeight=0.50 PerfScore 1.12
G_M23311_IG05:
mov rdi, gword ptr [r15+0x18]
mov rdx, 0xD1FFAB1E ; const ptr
mov rdx, gword ptr [rdx]
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd(System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this
cmp dword ptr [rdi], edi
;; size=32 bbWeight=0.50 PerfScore 3.88
G_M23311_IG06:
+ add rsp, 8
pop rbx
pop r15
- pop rbp
tail.jmp [rax]System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd(System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this
- ;; size=7 bbWeight=0.50 PerfScore 1.75
+ ;; size=10 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 112, prolog size 15, PerfScore 18.62, instruction count 30, allocated bytes for code 112 (MethodHash=7ce8a4f0) for method System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoArrayType:this (FullOpts)
+; Total bytes of code 166, prolog size 10, PerfScore 20.25, instruction count 39, allocated bytes for code 166 (MethodHash=7ce8a4f0) for method System.Reflection.TypeLoading.RoModule:GetUniqueArrayType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoArrayType:this (FullOpts)
; ============================================================ 41 (36.61 % of base) - System.Reflection.TypeLoading.RoModule:GetUniqueByRefType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoByRefType:this ; Assembly listing for method System.Reflection.TypeLoading.RoModule:GetUniqueByRefType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoByRefType:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp based frame
; fully interruptible
; No PGO data
+; 0 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 3, 2.50) ref -> r15 this class-hnd single-def <System.Reflection.TypeLoading.RoModule>
+; V00 this [V00,T02] ( 3, 2.50) ref -> r15 this class-hnd single-def <System.Reflection.TypeLoading.RoModule>
; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <System.Reflection.TypeLoading.RoType>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 rat0 [V03,T02] ( 3, 3 ) ref -> rax "delegate invoke call"
+; V03 tmp1 [V03,T01] ( 5, 5 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TypeLoading.RoByRefType>
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M45263_IG01:
- push rbp
push r15
push rbx
- lea rbp, [rsp+0x10]
+ push rax
mov r15, rdi
mov rbx, rsi
- ;; size=15 bbWeight=1 PerfScore 4.00
+ ;; size=10 bbWeight=1 PerfScore 3.50
G_M45263_IG02:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Reflection.RoModifiedType
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
je SHORT G_M45263_IG05
;; size=30 bbWeight=1 PerfScore 5.00
G_M45263_IG03:
- mov rsi, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rsi]
+ mov rdi, 0xD1FFAB1E ; System.Reflection.TypeLoading.RoByRefType
+ call CORINFO_HELP_NEWSFAST
+ mov r15, rax
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rdi]
+ lea rdi, bword ptr [r15+0x38]
+ call CORINFO_HELP_ASSIGN_REF
+ mov dword ptr [r15+0x50], -1
+ lea rdi, bword ptr [r15+0x60]
mov rsi, rbx
- mov rdi, gword ptr [rax+0x08]
- ;; size=20 bbWeight=0.50 PerfScore 2.25
+ call CORINFO_HELP_ASSIGN_REF
+ mov rax, r15
+ ;; size=63 bbWeight=0.50 PerfScore 4.12
G_M45263_IG04:
+ add rsp, 8
pop rbx
pop r15
- pop rbp
- tail.jmp [rax+0x18]System.Func`2[System.__Canon,System.__Canon]:Invoke(System.__Canon):System.__Canon:this
- ;; size=8 bbWeight=0.50 PerfScore 1.75
+ ret
+ ;; size=8 bbWeight=0.50 PerfScore 1.12
G_M45263_IG05:
mov rdi, gword ptr [r15+0x28]
mov rdx, 0xD1FFAB1E ; const ptr
mov rdx, gword ptr [rdx]
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd(System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this
cmp dword ptr [rdi], edi
;; size=32 bbWeight=0.50 PerfScore 3.88
G_M45263_IG06:
+ add rsp, 8
pop rbx
pop r15
- pop rbp
tail.jmp [rax]System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd(System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this
- ;; size=7 bbWeight=0.50 PerfScore 1.75
+ ;; size=10 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 112, prolog size 15, PerfScore 18.62, instruction count 30, allocated bytes for code 112 (MethodHash=d0934f30) for method System.Reflection.TypeLoading.RoModule:GetUniqueByRefType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoByRefType:this (FullOpts)
+; Total bytes of code 153, prolog size 10, PerfScore 19.25, instruction count 37, allocated bytes for code 153 (MethodHash=d0934f30) for method System.Reflection.TypeLoading.RoModule:GetUniqueByRefType(System.Reflection.TypeLoading.RoType):System.Reflection.TypeLoading.RoByRefType:this (FullOpts)
; ============================================================ |
Top method improvements-11 (-6.01 % of base) - System.Data.SqlTypes.SqlXml:CreateSqlXmlReader(System.IO.Stream,ubyte,ubyte):System.Xml.XmlReader ; Assembly listing for method System.Data.SqlTypes.SqlXml:CreateSqlXmlReader(System.IO.Stream,ubyte,ubyte):System.Xml.XmlReader (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rdi class-hnd single-def <System.IO.Stream>
-; V01 arg1 [V01,T02] ( 3, 2.50) ubyte -> rsi single-def
-; V02 arg2 [V02,T03] ( 3, 2 ) ubyte -> [rbp-0x14] EH-live single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rdi class-hnd single-def <System.IO.Stream>
+; V01 arg1 [V01,T01] ( 3, 2.50) ubyte -> rsi single-def
+; V02 arg2 [V02,T02] ( 3, 2 ) ubyte -> [rbp-0x14] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Xml.XmlReaderSettings>
-; V04 loc1 [V04,T04] ( 2, 2 ) ref -> rax class-hnd single-def <System.Xml.XmlReader>
+; V04 loc1 [V04,T03] ( 2, 2 ) ref -> rax class-hnd single-def <System.Xml.XmlReader>
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Exception>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T05] ( 2, 1.50) ref -> rdx
-; V08 tmp2 [V08,T07] ( 3, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-; V09 tmp3 [V09,T08] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TargetInvocationException>
-; V10 PSPSym [V10,T06] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym"
-; V11 rat0 [V11,T00] ( 3, 6 ) ref -> rax "delegate invoke call"
+; V07 tmp1 [V07,T04] ( 2, 1.50) ref -> rsi
+; V08 tmp2 [V08,T06] ( 3, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V09 tmp3 [V09,T07] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TargetInvocationException>
+; V10 PSPSym [V10,T05] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym"
;
; Lcl frame size = 16
G_M41339_IG01:
push rbp
push r15
push rbx
sub rsp, 16
lea rbp, [rsp+0x20]
mov qword ptr [rbp-0x20], rsp
mov dword ptr [rbp-0x14], edx
;; size=20 bbWeight=0.50 PerfScore 2.88
G_M41339_IG02:
mov rdx, 0xD1FFAB1E ; const ptr
- mov rcx, 0xD1FFAB1E ; const ptr
+ mov rax, 0xD1FFAB1E ; const ptr
test sil, sil
- mov rdx, gword ptr [rdx]
- cmove rdx, gword ptr [rcx]
+ mov rsi, gword ptr [rax]
+ cmovne rsi, gword ptr [rdx]
;; size=30 bbWeight=0.50 PerfScore 2.88
G_M41339_IG03:
- mov rsi, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rsi]
- mov rsi, rdi
- xor rcx, rcx
- mov rdi, gword ptr [rax+0x08]
- call [rax+0x18]System.Func`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Invoke(System.__Canon,System.__Canon,System.__Canon):System.__Canon:this
+ xor rdx, rdx
+ mov rax, 0xD1FFAB1E ; code for System.Xml.XmlReader:CreateSqlReader(System.IO.Stream,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext):System.Xml.XmlReader
+ call [rax]System.Xml.XmlReader:CreateSqlReader(System.IO.Stream,System.Xml.XmlReaderSettings,System.Xml.XmlParserContext):System.Xml.XmlReader
nop
- ;; size=26 bbWeight=1 PerfScore 8.00
+ ;; size=15 bbWeight=1 PerfScore 3.75
G_M41339_IG04:
add rsp, 16
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
G_M41339_IG05:
push rbp
push r15
push rbx
sub rsp, 16
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x20]
;; size=19 bbWeight=0 PerfScore 0.00
G_M41339_IG06:
mov rbx, rsi
cmp byte ptr [rbp-0x14], 0
je SHORT G_M41339_IG07
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Data.Common.ADP:IsCatchableExceptionType(System.Exception):ubyte
call [rax]System.Data.Common.ADP:IsCatchableExceptionType(System.Exception):ubyte
test eax, eax
je SHORT G_M41339_IG07
mov rdi, 0xD1FFAB1E ; System.Reflection.TargetInvocationException
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rdi, r15
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Reflection.TargetInvocationException:.ctor(System.Exception):this
call [rax]System.Reflection.TargetInvocationException:.ctor(System.Exception):this
mov rdi, r15
call CORINFO_HELP_THROW
int3
;; size=73 bbWeight=0 PerfScore 0.00
G_M41339_IG07:
call CORINFO_HELP_RETHROW
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 183, prolog size 20, PerfScore 16.50, instruction count 51, allocated bytes for code 183 (MethodHash=b7dc5e84) for method System.Data.SqlTypes.SqlXml:CreateSqlXmlReader(System.IO.Stream,ubyte,ubyte):System.Xml.XmlReader (FullOpts)
+; Total bytes of code 172, prolog size 20, PerfScore 12.25, instruction count 48, allocated bytes for code 172 (MethodHash=b7dc5e84) for method System.Data.SqlTypes.SqlXml:CreateSqlXmlReader(System.IO.Stream,ubyte,ubyte):System.Xml.XmlReader (FullOpts)
; ============================================================ -10 (-3.51 % of base) - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:MapVerifyErrorToChainStatus(Interop+Crypto+X509VerifyStatusCode):int ; Assembly listing for method System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:MapVerifyErrorToChainStatus(Interop+Crypto+X509VerifyStatusCode):int (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; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <Interop+Crypto+X509VerifyStatusCode>
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
-; V04 tmp2 [V04,T04] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.OutOfMemoryException>
+; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Security.Cryptography.CryptographicException>
+; V04 tmp2 [V04,T03] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.OutOfMemoryException>
; V05 tmp3 [V05,T00] ( 16, 16 ) int -> rax "Single return block return value"
; V06 tmp4 [V06,T01] ( 4, 3.48) int -> rdi single-def "field V00.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-; V07 rat0 [V07,T02] ( 3, 3 ) ref -> rax "delegate invoke call"
;
; Lcl frame size = 8
G_M38219_IG01:
push rbp
push rbx
push rax
lea rbp, [rsp+0x10]
;; size=8 bbWeight=1 PerfScore 3.50
G_M38219_IG02:
cmp edi, 53
ja SHORT G_M38219_IG04
;; size=5 bbWeight=1 PerfScore 1.25
G_M38219_IG03:
mov eax, edi
lea rcx, [reloc @RWD00]
mov ecx, dword ptr [rcx+4*rax]
lea rdx, G_M38219_IG02
add rcx, rdx
jmp rcx
;; size=24 bbWeight=0.98 PerfScore 5.89
G_M38219_IG04:
- mov rsi, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rsi]
- mov esi, edi
- mov rdi, gword ptr [rax+0x08]
- call [rax+0x18]System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+MapVersionSpecificCode:Invoke(Interop+Crypto+X509VerifyStatusCode):int:this
- ;; size=22 bbWeight=0.50 PerfScore 3.75
+ mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:MapOpenSsl30Code(Interop+Crypto+X509VerifyStatusCode):int
+ call [rax]System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:MapOpenSsl30Code(Interop+Crypto+X509VerifyStatusCode):int
+ ;; size=12 bbWeight=0.50 PerfScore 1.62
G_M38219_IG05:
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M38219_IG06:
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG07:
mov eax, 0x800
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG08:
mov eax, 0x1000
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG09:
mov eax, 0x8000
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG10:
mov eax, 0x4000
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG11:
mov eax, 512
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG12:
mov eax, 256
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG13:
mov eax, 0xD1FFAB1E
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG14:
mov eax, 0xD1FFAB1E
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG15:
mov eax, 16
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG16:
mov eax, 0x400
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG17:
mov eax, 4
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M38219_IG18:
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG19:
mov eax, 32
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG20:
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M38219_IG21:
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG22:
mov eax, 8
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG23:
mov eax, 64
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG24:
mov eax, 0x10000
jmp G_M38219_IG05
;; size=10 bbWeight=0.50 PerfScore 1.12
G_M38219_IG25:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M38219_IG26:
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG27:
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.CryptographicException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptographicException:.ctor():this
call [rax]System.Security.Cryptography.CryptographicException:.ctor():this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=42 bbWeight=0 PerfScore 0.00
G_M38219_IG28:
mov rdi, 0xD1FFAB1E ; System.OutOfMemoryException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.OutOfMemoryException:.ctor():this
call [rax]System.OutOfMemoryException:.ctor():this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=42 bbWeight=0 PerfScore 0.00
RWD00 dd G_M38219_IG25 - G_M38219_IG02
dd G_M38219_IG04 - G_M38219_IG02
dd G_M38219_IG24 - G_M38219_IG02
dd G_M38219_IG23 - G_M38219_IG02
dd G_M38219_IG04 - G_M38219_IG02
dd G_M38219_IG23 - G_M38219_IG02
dd G_M38219_IG22 - G_M38219_IG02
dd G_M38219_IG22 - G_M38219_IG02
dd G_M38219_IG23 - G_M38219_IG02
dd G_M38219_IG20 - G_M38219_IG02
dd G_M38219_IG20 - G_M38219_IG02
dd G_M38219_IG23 - G_M38219_IG02
dd G_M38219_IG23 - G_M38219_IG02
dd G_M38219_IG20 - G_M38219_IG02
dd G_M38219_IG20 - G_M38219_IG02
dd G_M38219_IG23 - G_M38219_IG02
dd G_M38219_IG23 - G_M38219_IG02
dd G_M38219_IG28 - G_M38219_IG02
dd G_M38219_IG19 - G_M38219_IG02
dd G_M38219_IG19 - G_M38219_IG02
dd G_M38219_IG24 - G_M38219_IG02
dd G_M38219_IG24 - G_M38219_IG02
dd G_M38219_IG27 - G_M38219_IG02
dd G_M38219_IG17 - G_M38219_IG02
dd G_M38219_IG04 - G_M38219_IG02
dd G_M38219_IG16 - G_M38219_IG02
dd G_M38219_IG15 - G_M38219_IG02
dd G_M38219_IG19 - G_M38219_IG02
dd G_M38219_IG14 - G_M38219_IG02
dd G_M38219_IG04 - G_M38219_IG02
dd G_M38219_IG04 - G_M38219_IG02
dd G_M38219_IG04 - G_M38219_IG02
dd G_M38219_IG16 - G_M38219_IG02
dd G_M38219_IG23 - G_M38219_IG02
dd G_M38219_IG13 - G_M38219_IG02
dd G_M38219_IG23 - G_M38219_IG02
dd G_M38219_IG23 - G_M38219_IG02
dd G_M38219_IG16 - G_M38219_IG02
dd G_M38219_IG04 - G_M38219_IG02
dd G_M38219_IG16 - G_M38219_IG02
dd G_M38219_IG04 - G_M38219_IG02
dd G_M38219_IG12 - G_M38219_IG02
dd G_M38219_IG11 - G_M38219_IG02
dd G_M38219_IG11 - G_M38219_IG02
dd G_M38219_IG04 - G_M38219_IG02
dd G_M38219_IG04 - G_M38219_IG02
dd G_M38219_IG04 - G_M38219_IG02
dd G_M38219_IG10 - G_M38219_IG02
dd G_M38219_IG09 - G_M38219_IG02
dd G_M38219_IG08 - G_M38219_IG02
dd G_M38219_IG04 - G_M38219_IG02
dd G_M38219_IG04 - G_M38219_IG02
dd G_M38219_IG04 - G_M38219_IG02
dd G_M38219_IG07 - G_M38219_IG02
-; Total bytes of code 285, prolog size 8, PerfScore 35.14, instruction count 83, allocated bytes for code 285 (MethodHash=1e166ab4) for method System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:MapVerifyErrorToChainStatus(Interop+Crypto+X509VerifyStatusCode):int (FullOpts)
+; Total bytes of code 275, prolog size 8, PerfScore 33.02, instruction count 80, allocated bytes for code 275 (MethodHash=1e166ab4) for method System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:MapVerifyErrorToChainStatus(Interop+Crypto+X509VerifyStatusCode):int (FullOpts)
; ============================================================ -9 (-5.70 % of base) - System.Security.Cryptography.XmlKeyHelper+ParseState+Functions:ParseDocument(System.String):System.Object ; Assembly listing for method System.Security.Cryptography.XmlKeyHelper+ParseState+Functions:ParseDocument(System.String):System.Object (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; 2 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rdi class-hnd single-def <System.String>
+; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rdi class-hnd single-def <System.String>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.__Canon>
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Xml.Linq.XDocument>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Reflection.RuntimeMethodInfo>
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
-; V05 tmp4 [V05,T05] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-; V06 tmp5 [V06,T03] ( 3, 3 ) ref -> rdi class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
+; V05 tmp4 [V05,T04] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V06 tmp5 [V06,T02] ( 3, 3 ) ref -> rdi class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
;* V07 tmp6 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
-; V09 tmp8 [V09,T06] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V10 cse0 [V10,T04] ( 3, 3 ) ref -> rdi "CSE #02: aggressive"
-; V11 rat0 [V11,T00] ( 3, 6 ) ref -> rax "delegate invoke call"
+; V09 tmp8 [V09,T05] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V10 cse0 [V10,T03] ( 3, 3 ) ref -> rdi "CSE #02: aggressive"
;
; Lcl frame size = 8
G_M47281_IG01:
push rbp
push rbx
push rax
lea rbp, [rsp+0x10]
;; size=8 bbWeight=1 PerfScore 3.50
G_M47281_IG02:
- mov rsi, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rsi]
- mov rsi, rdi
- mov rdi, gword ptr [rax+0x08]
- call [rax+0x18]System.Func`2[System.__Canon,System.__Canon]:Invoke(System.__Canon):System.__Canon:this
+ xor esi, esi
+ mov rax, 0xD1FFAB1E ; code for System.Xml.Linq.XDocument:Parse(System.String,int):System.Xml.Linq.XDocument
+ call [rax]System.Xml.Linq.XDocument:Parse(System.String,int):System.Xml.Linq.XDocument
mov rsi, rax
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
mov rdi, gword ptr [rdi+0x18]
xor rdx, rdx
test rdi, rdi
cmove rdi, rdx
test rdi, rdi
je SHORT G_M47281_IG04
mov edx, 60
xor rcx, rcx
xor r8, r8
xor r9, r9
mov rax, 0xD1FFAB1E
mov rax, qword ptr [rax]
- ;; size=83 bbWeight=1 PerfScore 17.25
+ ;; size=74 bbWeight=1 PerfScore 13.25
G_M47281_IG03:
add rsp, 8
pop rbx
pop rbp
tail.jmp [rax+0x30]System.Reflection.MethodBase:Invoke(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this
;; size=10 bbWeight=1 PerfScore 3.25
G_M47281_IG04:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Arg_GetMethNotFnd():System.String
call [rax]System.SR:get_Arg_GetMethNotFnd():System.String
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String):this
call [rax]System.ArgumentException:.ctor(System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=57 bbWeight=0 PerfScore 0.00
-; Total bytes of code 158, prolog size 8, PerfScore 24.00, instruction count 40, allocated bytes for code 158 (MethodHash=197b474e) for method System.Security.Cryptography.XmlKeyHelper+ParseState+Functions:ParseDocument(System.String):System.Object (FullOpts)
+; Total bytes of code 149, prolog size 8, PerfScore 20.00, instruction count 38, allocated bytes for code 149 (MethodHash=197b474e) for method System.Security.Cryptography.XmlKeyHelper+ParseState+Functions:ParseDocument(System.String):System.Object (FullOpts)
; ============================================================ -8 (-0.86 % of base) - System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult:Read():this ; Assembly listing for method System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult:Read():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; 14 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T03] ( 7, 30 ) ref -> rbx this class-hnd single-def <System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 13, 88 ) ref -> r15 class-hnd exact "Inlining Arg" <System.Net.BufferedReadStream>
; V04 tmp2 [V04,T05] ( 4, 28 ) ref -> r14 class-hnd "Inlining Arg" <ubyte[]>
; V05 tmp3 [V05,T02] ( 6, 36 ) int -> r13 "Inlining Arg"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.CancellationToken>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
; V08 tmp6 [V08,T04] ( 6, 30 ) ref -> r13 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[int]>
-; V09 tmp7 [V09,T22] ( 2, 8 ) int -> r13 "Inlining Arg"
+; V09 tmp7 [V09,T21] ( 2, 8 ) int -> r13 "Inlining Arg"
;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V11 tmp9 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V12 tmp10 [V12,T26] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.NotSupportedException>
+; V12 tmp10 [V12,T25] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.NotSupportedException>
; V13 tmp11 [V13,T09] ( 10, 20 ) int -> r12 "Inline return value spill temp"
-; V14 tmp12 [V14,T18] ( 3, 12 ) int -> r12 "Inlining Arg"
-; V15 tmp13 [V15,T24] ( 3, 6 ) ref -> r13 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[int]>
+; V14 tmp12 [V14,T17] ( 3, 12 ) int -> r12 "Inlining Arg"
+; V15 tmp13 [V15,T23] ( 3, 6 ) ref -> r13 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[int]>
;* V16 tmp14 [V16 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V17 tmp15 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V18 tmp16 [V18,T11] ( 4, 16 ) ref -> rax class-hnd exact "NewObj constructor temp" <System.Threading.Tasks.Task`1[int]>
;* V19 tmp17 [V19 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[int]>
;* V20 tmp18 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V22 tmp20 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V23 tmp21 [V23 ] ( 11, 22 ) struct (64) [rbp-0x68] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Net.BufferedReadStream+<ReadMoreAsync>d__14>
;* V24 tmp22 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]>
-; V25 tmp23 [V25,T21] ( 2, 8 ) ref -> r13 class-hnd "dup spill" <System.Threading.Tasks.Task`1[int]>
-; V26 tmp24 [V26,T19] ( 4, 8 ) ref -> r13
+; V25 tmp23 [V25,T20] ( 2, 8 ) ref -> r13 class-hnd "dup spill" <System.Threading.Tasks.Task`1[int]>
+; V26 tmp24 [V26,T18] ( 4, 8 ) ref -> r13
; V27 tmp25 [V27,T00] ( 10, 92 ) ref -> r15 class-hnd exact "NewObj constructor temp" <System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult>
;* V28 tmp26 [V28 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable>
;* V29 tmp27 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter>
; V30 tmp28 [V30,T10] ( 5, 20 ) ref -> r13 class-hnd exact "NewObj constructor temp" <System.Action>
;* V31 tmp29 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V32 tmp30 [V32,T12] ( 4, 16 ) ref -> r14 class-hnd "Inlining Arg" <System.Threading.Tasks.Task>
;* V33 tmp31 [V33 ] ( 0, 0 ) ref -> zero-ref
;* V34 tmp32 [V34 ] ( 0, 0 ) ref -> zero-ref
;* V35 tmp33 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp34 [V36 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable>
;* V37 tmp35 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter>
; V38 tmp36 [V38,T13] ( 3, 12 ) ref -> r12 class-hnd "Inlining Arg" <System.Action>
;* V39 tmp37 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.Tasks.Task>
-;* V40 tmp38 [V40,T25] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V40 tmp38 [V40,T24] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V41 tmp39 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
;* V42 tmp40 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.BufferedReadStream>
;* V43 tmp41 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TaskAwaiter`1[int]>
; V44 tmp42 [V44,T06] ( 4, 28 ) ref -> r15 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[int]>
;* V45 tmp43 [V45 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TaskAwaiter`1[int]>
;* V46 tmp44 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[int]>
;* V47 tmp45 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[int]>
-;* V48 tmp46 [V48,T23] ( 0, 0 ) ref -> zero-ref "field V06._source (fldOffset=0x0)" P-INDEP
+;* V48 tmp46 [V48,T22] ( 0, 0 ) ref -> zero-ref "field V06._source (fldOffset=0x0)" P-INDEP
;* V49 tmp47 [V49 ] ( 0, 0 ) ref -> zero-ref "field V07._source (fldOffset=0x0)" P-INDEP
;* V50 tmp48 [V50 ] ( 0, 0 ) ref -> zero-ref "field V20._source (fldOffset=0x0)" P-INDEP
;* V51 tmp49 [V51 ] ( 0, 0 ) ref -> zero-ref "field V24.m_task (fldOffset=0x0)" P-INDEP
;* V52 tmp50 [V52 ] ( 0, 0 ) ref -> zero-ref "field V29.m_task (fldOffset=0x0)" P-INDEP
;* V53 tmp51 [V53 ] ( 0, 0 ) int -> zero-ref "field V29.m_options (fldOffset=0x8)" P-INDEP
;* V54 tmp52 [V54 ] ( 0, 0 ) ref -> zero-ref "field V37.m_task (fldOffset=0x0)" P-INDEP
;* V55 tmp53 [V55 ] ( 0, 0 ) int -> zero-ref "field V37.m_options (fldOffset=0x8)" P-INDEP
;* V56 tmp54 [V56 ] ( 0, 0 ) ref -> zero-ref "field V43.m_task (fldOffset=0x0)" P-INDEP
;* V57 tmp55 [V57 ] ( 0, 0 ) ref -> zero-ref "field V45.m_task (fldOffset=0x0)" P-INDEP
; V58 tmp56 [V58,T14] ( 3, 12 ) ref -> rdi "arr expr"
; V59 tmp57 [V59,T15] ( 3, 12 ) ref -> rdi "argument with side effect"
; V60 tmp58 [V60,T16] ( 3, 12 ) ref -> rdi "argument with side effect"
-; V61 tmp59 [V61,T27] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V61 tmp59 [V61,T26] ( 2, 0 ) ref -> rsi "argument with side effect"
; V62 cse0 [V62,T07] ( 3, 24 ) ref -> rdi "CSE #02: moderate"
; V63 cse1 [V63,T08] ( 3, 24 ) ref -> rdi "CSE #01: moderate"
-; V64 cse2 [V64,T20] ( 4, 8 ) int -> r13 "CSE #05: moderate"
-; V65 rat0 [V65,T17] ( 3, 12 ) ref -> rax "delegate invoke call"
+; V64 cse2 [V64,T19] ( 4, 8 ) int -> r13 "CSE #05: moderate"
;
; Lcl frame size = 72
G_M32800_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 72
lea rbp, [rsp+0x70]
xor eax, eax
mov qword ptr [rbp-0x68], rax
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x60], ymm8
vmovdqa xmmword ptr [rbp-0x40], xmm8
mov qword ptr [rbp-0x30], rax
mov rbx, rdi
;; size=47 bbWeight=8 PerfScore 108.67
G_M32800_IG02:
mov rdi, gword ptr [rbx+0x48]
mov r15, gword ptr [rdi+0x08]
mov rdi, gword ptr [rdi+0x10]
mov r14, rdi
mov r13d, dword ptr [rdi+0x08]
mov edi, dword ptr [r15+0x24]
cmp edi, dword ptr [r15+0x20]
jge G_M32800_IG11
;; size=33 bbWeight=8 PerfScore 114.00
G_M32800_IG03:
mov r12d, dword ptr [r15+0x20]
sub r12d, dword ptr [r15+0x24]
cmp r13d, r12d
jg SHORT G_M32800_IG04
mov r12d, r13d
;; size=16 bbWeight=2 PerfScore 13.00
G_M32800_IG04:
mov rdi, gword ptr [r15+0x18]
mov esi, dword ptr [r15+0x24]
mov rdx, r14
mov r8d, r12d
xor ecx, ecx
mov rax, 0xD1FFAB1E ; code for System.Buffer:BlockCopy(System.Array,int,System.Array,int,int)
call [rax]System.Buffer:BlockCopy(System.Array,int,System.Array,int,int)
add dword ptr [r15+0x24], r12d
cmp r12d, r13d
je SHORT G_M32800_IG07
cmp byte ptr [r15+0x28], 0
je SHORT G_M32800_IG07
sub r13d, r12d
xor edi, edi
mov qword ptr [rbp-0x48], rdi
mov gword ptr [rbp-0x68], r15
mov dword ptr [rbp-0x4C], r12d
mov gword ptr [rbp-0x60], r14
mov dword ptr [rbp-0x54], r12d
mov dword ptr [rbp-0x50], r13d
;; size=73 bbWeight=2 PerfScore 45.50
G_M32800_IG05:
mov qword ptr [rbp-0x40], rdi
mov dword ptr [rbp-0x58], -1
lea rdi, [rbp-0x68]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncMethodBuilderCore:Start[System.Net.BufferedReadStream+<ReadMoreAsync>d__14](byref)
call [rax]System.Runtime.CompilerServices.AsyncMethodBuilderCore:Start[System.Net.BufferedReadStream+<ReadMoreAsync>d__14](byref)
mov r13, gword ptr [rbp-0x48]
test r13, r13
jne SHORT G_M32800_IG06
lea rdi, [rbp-0x48]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:InitializeTaskAsPromise():System.Threading.Tasks.Task`1[int]:this
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:InitializeTaskAsPromise():System.Threading.Tasks.Task`1[int]:this
mov r13, rax
;; size=55 bbWeight=2 PerfScore 24.00
G_M32800_IG06:
jmp G_M32800_IG12
;; size=5 bbWeight=2 PerfScore 4.00
G_M32800_IG07:
lea r13d, [r12+0x01]
cmp r13d, 10
jb SHORT G_M32800_IG08
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[int]
call CORINFO_HELP_NEWSFAST
mov dword ptr [rax+0x34], 0xD1FFAB1E
mov dword ptr [rax+0x38], r12d
mov r13, rax
jmp SHORT G_M32800_IG10
;; size=42 bbWeight=2 PerfScore 14.50
G_M32800_IG08:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M32800_IG23
;; size=19 bbWeight=2 PerfScore 8.50
G_M32800_IG09:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.TaskCache:s_int32Tasks
mov rdi, gword ptr [rdi]
cmp r13d, dword ptr [rdi+0x08]
jae G_M32800_IG27
mov eax, r13d
mov r13, gword ptr [rdi+8*rax+0x10]
;; size=31 bbWeight=2 PerfScore 17.00
G_M32800_IG10:
jmp SHORT G_M32800_IG12
;; size=2 bbWeight=2 PerfScore 4.00
G_M32800_IG11:
mov rdi, gword ptr [r15+0x10]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x28]System.IO.Stream:get_CanRead():ubyte:this
test eax, eax
je G_M32800_IG26
mov rdi, gword ptr [r15+0x10]
mov rsi, r14
xor r8, r8
mov ecx, r13d
xor edx, edx
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x58]
call [rax+0x18]System.IO.Stream:ReadAsync(ubyte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[int]:this
mov r13, rax
;; size=50 bbWeight=2 PerfScore 41.00
G_M32800_IG12:
test r13, r13
je G_M32800_IG25
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult
call CORINFO_HELP_NEWSFAST
mov r15, rax
lea rdi, bword ptr [r15+0x08]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r15+0x18]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
test dword ptr [r13+0x34], 0xD1FFAB1E
jne G_M32800_IG17
;; size=65 bbWeight=8 PerfScore 82.00
G_M32800_IG13:
mov rdi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rdi]
lea rdi, bword ptr [r15+0x10]
call CORINFO_HELP_ASSIGN_REF
mov r14, gword ptr [r15+0x08]
cmp byte ptr [r14], r14b
mov rdi, 0xD1FFAB1E ; System.Action
call CORINFO_HELP_NEWSFAST
mov r13, rax
lea rdi, bword ptr [r13+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult:<.ctor>b__2_0():this
mov qword ptr [r13+0x18], rdi
mov r12, r13
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M32800_IG24
;; size=95 bbWeight=2 PerfScore 35.50
G_M32800_IG14:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.TplEventSource:Log
mov rdi, gword ptr [rdi]
cmp byte ptr [rdi+0x9D], 0
jne SHORT G_M32800_IG15
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task:s_asyncDebuggingEnabled
cmp byte ptr [rdi], 0
je SHORT G_M32800_IG16
;; size=37 bbWeight=2 PerfScore 21.00
G_M32800_IG15:
mov rdi, r14
mov rsi, r13
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.TaskAwaiter:OutputWaitEtwEvents(System.Threading.Tasks.Task,System.Action):System.Action
call [rax]System.Runtime.CompilerServices.TaskAwaiter:OutputWaitEtwEvents(System.Threading.Tasks.Task,System.Action):System.Action
mov r12, rax
;; size=21 bbWeight=2 PerfScore 8.00
G_M32800_IG16:
mov rdi, r14
mov rsi, r12
xor edx, edx
mov ecx, 1
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:SetContinuationForAwait(System.Action,ubyte,ubyte):this
call [rax]System.Threading.Tasks.Task:SetContinuationForAwait(System.Action,ubyte,ubyte):this
jmp SHORT G_M32800_IG18
;; size=27 bbWeight=2 PerfScore 12.50
G_M32800_IG17:
mov byte ptr [r15+0x20], 1
- mov rsi, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rsi]
- mov rsi, r15
- mov rdi, gword ptr [rax+0x08]
- call [rax+0x18]System.AsyncCallback:Invoke(System.IAsyncResult):this
- ;; size=28 bbWeight=2 PerfScore 17.00
+ mov rdi, r15
+ mov rax, 0xD1FFAB1E ; code for System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult:ReadCallback(System.IAsyncResult)
+ call [rax]System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult:ReadCallback(System.IAsyncResult)
+ ;; size=20 bbWeight=2 PerfScore 9.00
G_M32800_IG18:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult:get_CompletedSynchronously():ubyte:this
call [rax]System.Threading.Tasks.TaskToAsyncResult+TaskAsyncResult:get_CompletedSynchronously():ubyte:this
test eax, eax
je SHORT G_M32800_IG22
;; size=19 bbWeight=8 PerfScore 38.00
G_M32800_IG19:
mov rdi, gword ptr [rbx+0x48]
mov rdi, gword ptr [rdi+0x08]
cmp byte ptr [rdi], dil
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskToAsyncResult:Unwrap[int](System.IAsyncResult):System.Threading.Tasks.Task`1[int]
call [rax]System.Threading.Tasks.TaskToAsyncResult:Unwrap[int](System.IAsyncResult):System.Threading.Tasks.Task`1[int]
mov r15, rax
mov edi, dword ptr [r15+0x34]
and edi, 0xD1FFAB1E
cmp edi, 0xD1FFAB1E
je SHORT G_M32800_IG21
;; size=47 bbWeight=4 PerfScore 57.00
G_M32800_IG20:
mov rdi, r15
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.TaskAwaiter:HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task,int)
call [rax]System.Runtime.CompilerServices.TaskAwaiter:HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task,int)
;; size=17 bbWeight=2 PerfScore 7.50
G_M32800_IG21:
mov edi, dword ptr [r15+0x38]
mov dword ptr [rbx+0x50], edi
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult:ProcessRead():ubyte:this
call [rax]System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult:ProcessRead():ubyte:this
test eax, eax
jne G_M32800_IG02
;; size=30 bbWeight=4 PerfScore 31.00
G_M32800_IG22:
add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M32800_IG23:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.TaskCache
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M32800_IG09
;; size=27 bbWeight=0 PerfScore 0.00
G_M32800_IG24:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.TplEventSource
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M32800_IG14
;; size=27 bbWeight=0 PerfScore 0.00
G_M32800_IG25:
mov edi, 0x134C6
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_M32800_IG26:
mov rdi, 0xD1FFAB1E ; System.NotSupportedException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_ReadNotSupported():System.String
call [rax]System.SR:get_ReadNotSupported():System.String
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.NotSupportedException:.ctor(System.String):this
call [rax]System.NotSupportedException:.ctor(System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=57 bbWeight=0 PerfScore 0.00
G_M32800_IG27:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 927, prolog size 44, PerfScore 707.92, instruction count 216, allocated bytes for code 927 (MethodHash=ac987fdf) for method System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult:Read():this (FullOpts)
+; Total bytes of code 919, prolog size 44, PerfScore 699.92, instruction count 214, allocated bytes for code 919 (MethodHash=ac987fdf) for method System.Net.Mail.SmtpReplyReaderFactory+ReadLinesAsyncResult:Read():this (FullOpts)
; ============================================================ -3 (-1.82 % of base) - System.Security.Cryptography.CryptoConfigForwarder:CreateFromName[System.__Canon](System.String):System.__Canon ; Assembly listing for method System.Security.Cryptography.CryptoConfigForwarder:CreateFromName[System.__Canon](System.String):System.__Canon (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; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 TypeCtx [V00,T01] ( 4, 4 ) long -> rbx single-def
-; V01 arg0 [V01,T03] ( 3, 3 ) ref -> rsi class-hnd single-def <System.String>
-; V02 loc0 [V02,T07] ( 4, 1.25) ref -> [rbp-0x18] class-hnd EH-live spill-single-def <System.__Canon>
-; V03 loc1 [V03,T06] ( 2, 2 ) ref -> rcx class-hnd single-def <System.__Canon>
+; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def <System.String>
+; V02 loc0 [V02,T06] ( 4, 1.25) ref -> [rbp-0x18] class-hnd EH-live spill-single-def <System.Object>
+; V03 loc1 [V03,T05] ( 2, 2 ) ref -> rcx class-hnd single-def <System.__Canon>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V06 tmp2 [V06,T09] ( 3, 0 ) ref -> rax class-hnd single-def "dup spill" <System.__Canon>
+; V06 tmp2 [V06,T08] ( 3, 0 ) ref -> rax class-hnd single-def "dup spill" <System.Object>
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 PSPSym [V08,T08] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym"
-; V09 rat0 [V09,T04] ( 2, 3 ) long -> rdi "Spilling to split statement for tree"
+; V08 PSPSym [V08,T07] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym"
+; V09 rat0 [V09,T03] ( 2, 3 ) long -> rdi "Spilling to split statement for tree"
; V10 rat1 [V10,T00] ( 5, 7.50) ref -> rcx "replacement local"
-; V11 rat2 [V11,T05] ( 3, 2.50) long -> rdi "CSE for expectedClsNode"
-; V12 rat3 [V12,T02] ( 3, 6 ) ref -> rax "delegate invoke call"
+; V11 rat2 [V11,T04] ( 3, 2.50) long -> rdi "CSE for expectedClsNode"
;
; Lcl frame size = 24
G_M41944_IG01:
push rbp
push rbx
sub rsp, 24
lea rbp, [rsp+0x20]
mov qword ptr [rbp-0x20], rsp
mov qword ptr [rbp-0x10], rdi
mov rbx, rdi
;; size=22 bbWeight=1 PerfScore 5.00
G_M41944_IG02:
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rdi]
- mov rdi, gword ptr [rax+0x08]
- call [rax+0x18]System.Func`2[System.__Canon,System.__Canon]:Invoke(System.__Canon):System.__Canon:this
+ mov rdi, rsi
+ xor rsi, rsi
+ mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptoConfig:CreateFromName(System.String,System.Object[]):System.Object
+ call [rax]System.Security.Cryptography.CryptoConfig:CreateFromName(System.String,System.Object[]):System.Object
mov gword ptr [rbp-0x18], rax
- ;; size=24 bbWeight=1 PerfScore 8.25
+ ;; size=21 bbWeight=1 PerfScore 4.75
G_M41944_IG03:
mov rdi, qword ptr [rbx+0x18]
mov rdi, qword ptr [rdi]
mov rcx, rax
test rcx, rcx
je SHORT G_M41944_IG06
;; size=15 bbWeight=1 PerfScore 5.50
G_M41944_IG04:
cmp qword ptr [rcx], rdi
je SHORT G_M41944_IG06
;; size=5 bbWeight=0.50 PerfScore 2.00
G_M41944_IG05:
mov rsi, rax
mov rcx, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTANY
call [rcx]CORINFO_HELP_CHKCASTANY
mov rcx, rax
mov rax, gword ptr [rbp-0x18]
;; size=22 bbWeight=0.25 PerfScore 1.19
G_M41944_IG06:
mov rax, rcx
;; size=3 bbWeight=1 PerfScore 0.25
G_M41944_IG07:
add rsp, 24
pop rbx
pop rbp
ret
;; size=7 bbWeight=1 PerfScore 2.25
G_M41944_IG08:
push rbp
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x20]
;; size=14 bbWeight=0 PerfScore 0.00
G_M41944_IG09:
mov rsi, gword ptr [rbp-0x18]
mov rdi, 0xD1FFAB1E ; System.IDisposable
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE
call [rax]CORINFO_HELP_ISINSTANCEOFINTERFACE
test rax, rax
je SHORT G_M41944_IG10
mov rdi, rax
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
;; size=47 bbWeight=0 PerfScore 0.00
G_M41944_IG10:
call CORINFO_HELP_RETHROW
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 165, prolog size 22, PerfScore 24.44, instruction count 46, allocated bytes for code 165 (MethodHash=bd945c27) for method System.Security.Cryptography.CryptoConfigForwarder:CreateFromName[System.__Canon](System.String):System.__Canon (FullOpts)
+; Total bytes of code 162, prolog size 22, PerfScore 20.94, instruction count 46, allocated bytes for code 162 (MethodHash=bd945c27) for method System.Security.Cryptography.CryptoConfigForwarder:CreateFromName[System.__Canon](System.String):System.__Canon (FullOpts)
; ============================================================ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 21 minutes 33 seconds.
dotnet/runtime#109679
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: