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 #802
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: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- mov r8, rsi
- ; gcrRegs +[r8]
- mov rax, rdx
- ; gcrRegs +[rax]
- mov r9, rcx
- ; gcrRegs +[r9]
- ;; size=9 bbWeight=1 PerfScore 0.75
-G_M13005_IG02: ; bbWeight=1, gcrefRegs=0381 {rax rdi r8 r9}, byrefRegs=0000 {}, byref
+G_M13005_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ push rbp
+ push r15
+ push r14
+ push r13
+ push r12
+ push rbx
+ push rax
+ lea rbp, [rsp+0x30]
+ mov rbx, rdi
+ ; gcrRegs +[rbx]
+ mov r15, rsi
+ ; gcrRegs +[r15]
+ mov r14, rdx
+ ; gcrRegs +[r14]
+ mov r13, rcx
+ ; gcrRegs +[r13]
+ ;; size=28 bbWeight=1 PerfScore 8.50
+G_M13005_IG02: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov rdi, rbx
; gcrRegs +[rdi]
- mov rsi, 0xD1FFAB1E ; const ptr
- mov r10, gword ptr [rsi]
- ; gcrRegs +[r10]
- mov rsi, rdi
+ mov rsi, r15
; gcrRegs +[rsi]
- mov rdx, r8
+ 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
+ ; gcrRegs -[rsi rdi]
+ mov r12d, eax
+ test r12d, r12d
+ jl SHORT G_M13005_IG05
+ ;; size=26 bbWeight=1 PerfScore 5.25
+G_M13005_IG03: ; bbWeight=0.50, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
+ mov rdi, gword ptr [rbx+0x10]
+ ; gcrRegs +[rdi]
+ movsxd rsi, r12d
+ mov rdx, r14
; gcrRegs +[rdx]
- mov rcx, rax
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
+ call [rax]CORINFO_HELP_ARRADDR_ST
+ ; gcrRegs -[rdx rdi r14]
+ mov rdi, gword ptr [rbx+0x18]
+ ; gcrRegs +[rdi]
+ movsxd rsi, r12d
+ mov rdx, r13
+ ; gcrRegs +[rdx]
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
+ call [rax]CORINFO_HELP_ARRADDR_ST
+ ; gcrRegs -[rdx rbx rdi r13]
+ nop
+ ;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M13005_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ 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: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx r13-r15]
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ mov rsi, r15
+ ; gcrRegs +[rsi]
+ mov rdx, r14
+ ; gcrRegs +[rdx]
+ mov rcx, r13
; gcrRegs +[rcx]
- mov r8, r9
- mov rdi, gword ptr [r10+0x08]
- ;; size=29 bbWeight=1 PerfScore 5.25
-G_M13005_IG03: ; bbWeight=1, epilog, nogc, extend
- 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 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: ; bbWeight=0.50, epilog, nogc, extend
+ 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: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- mov r8, rsi
- ; gcrRegs +[r8]
- mov rax, rdx
- ; gcrRegs +[rax]
- mov r9, rcx
- ; gcrRegs +[r9]
- ;; size=9 bbWeight=1 PerfScore 0.75
-G_M23470_IG02: ; bbWeight=1, gcrefRegs=0381 {rax rdi r8 r9}, byrefRegs=0000 {}, byref
+G_M23470_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ push rbp
+ push r15
+ push r14
+ push r13
+ push r12
+ push rbx
+ push rax
+ lea rbp, [rsp+0x30]
+ mov rbx, rdi
+ ; gcrRegs +[rbx]
+ mov r15, rsi
+ ; gcrRegs +[r15]
+ mov r14, rdx
+ ; gcrRegs +[r14]
+ mov r13, rcx
+ ; gcrRegs +[r13]
+ ;; size=28 bbWeight=1 PerfScore 8.50
+G_M23470_IG02: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov rdi, rbx
; gcrRegs +[rdi]
- mov rsi, 0xD1FFAB1E ; const ptr
- mov r10, gword ptr [rsi]
- ; gcrRegs +[r10]
- mov rsi, rdi
+ mov rsi, r15
; gcrRegs +[rsi]
- mov rdx, r8
+ 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
+ ; gcrRegs -[rsi rdi]
+ mov r12d, eax
+ test r12d, r12d
+ jl SHORT G_M23470_IG05
+ ;; size=26 bbWeight=1 PerfScore 5.25
+G_M23470_IG03: ; bbWeight=0.50, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
+ mov rdi, gword ptr [rbx+0x10]
+ ; gcrRegs +[rdi]
+ movsxd rsi, r12d
+ mov rdx, r14
; gcrRegs +[rdx]
- mov rcx, rax
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
+ call [rax]CORINFO_HELP_ARRADDR_ST
+ ; gcrRegs -[rdx rdi r14]
+ mov rdi, gword ptr [rbx+0x18]
+ ; gcrRegs +[rdi]
+ movsxd rsi, r12d
+ mov rdx, r13
+ ; gcrRegs +[rdx]
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
+ call [rax]CORINFO_HELP_ARRADDR_ST
+ ; gcrRegs -[rdx rbx rdi r13]
+ nop
+ ;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M23470_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ 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: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx r13-r15]
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ mov rsi, r15
+ ; gcrRegs +[rsi]
+ mov rdx, r14
+ ; gcrRegs +[rdx]
+ mov rcx, r13
; gcrRegs +[rcx]
- mov r8, r9
- mov rdi, gword ptr [r10+0x08]
- ;; size=29 bbWeight=1 PerfScore 5.25
-G_M23470_IG03: ; bbWeight=1, epilog, nogc, extend
- 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 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: ; bbWeight=0.50, epilog, nogc, extend
+ 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: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M5755_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
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
; gcrRegs +[rbx]
mov rdi, rsi
; gcrRegs +[rdi]
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M5755_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ ;; size=22 bbWeight=1 PerfScore 8.00
+G_M5755_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
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
; gcrRegs -[rdi] +[rax]
mov r15, rax
; gcrRegs +[r15]
mov r14, gword ptr [rbx+0x10]
; gcrRegs +[r14]
mov rbx, gword ptr [rbx+0x18]
mov rdi, r15
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; code for System.Object:GetType():System.Type:this
; gcrRegs -[rax]
call [rax]System.Object:GetType():System.Type:this
; gcrRegs -[rdi] +[rax]
- mov r8, rax
- ; gcrRegs +[r8]
- mov rsi, r14
- ; gcrRegs +[rsi]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rcx]
- mov rcx, r15
- ; gcrRegs +[rcx]
- mov rdi, gword ptr [rax+0x08]
+ mov r13, rax
+ ; gcrRegs +[r13]
+ mov rdi, r14
; gcrRegs +[rdi]
- ;; size=71 bbWeight=1 PerfScore 18.25
-G_M5755_IG03: ; bbWeight=1, epilog, nogc, extend
+ mov rsi, rbx
+ ; gcrRegs +[rsi]
+ mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.SerializationInfo:FindElement(System.String):int:this
+ ; gcrRegs -[rax]
+ call [rax]System.Runtime.Serialization.SerializationInfo:FindElement(System.String):int:this
+ ; gcrRegs -[rsi rdi]
+ mov r12d, eax
+ test r12d, r12d
+ jl SHORT G_M5755_IG05
+ ;; size=71 bbWeight=1 PerfScore 18.50
+G_M5755_IG03: ; bbWeight=0.50, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ mov rdi, gword ptr [r14+0x10]
+ ; gcrRegs +[rdi]
+ movsxd rsi, r12d
+ mov rdx, r15
+ ; gcrRegs +[rdx]
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
+ call [rax]CORINFO_HELP_ARRADDR_ST
+ ; gcrRegs -[rdx rdi r15]
+ mov rdi, gword ptr [r14+0x18]
+ ; gcrRegs +[rdi]
+ movsxd rsi, r12d
+ mov rdx, r13
+ ; gcrRegs +[rdx]
+ mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
+ call [rax]CORINFO_HELP_ARRADDR_ST
+ ; gcrRegs -[rdx rdi r13-r14]
+ nop
+ ;; size=45 bbWeight=0.50 PerfScore 5.88
+G_M5755_IG04: ; bbWeight=0.50, epilog, nogc, extend
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: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx r13-r15]
+ mov rdi, r14
+ ; gcrRegs +[rdi]
+ mov rsi, rbx
+ ; gcrRegs +[rsi]
+ mov rdx, r15
+ ; gcrRegs +[rdx]
+ mov rcx, r13
+ ; gcrRegs +[rcx]
+ 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: ; bbWeight=0.50, epilog, nogc, extend
+ 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)
; ============================================================ 78 (89.66 % of base) - Microsoft.Extensions.Http.Logging.LogHelper:LogRequestFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException) ; Assembly listing for method Microsoft.Extensions.Http.Logging.LogHelper:LogRequestFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException) (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rdi class-hnd single-def <Microsoft.Extensions.Logging.ILogger>
+; V00 arg0 [V00,T00] ( 4, 3.50) ref -> rbx class-hnd single-def <Microsoft.Extensions.Logging.ILogger>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.TimeSpan>
-; V02 arg2 [V02,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Net.Http.HttpRequestException>
+; V02 arg2 [V02,T02] ( 3, 2.50) ref -> r15 class-hnd single-def <System.Net.Http.HttpRequestException>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T05] ( 4, 2.50) double -> mm0 "Inline return value spill temp"
+; V04 tmp1 [V04,T06] ( 4, 2 ) double -> [rbp-0x20] "Inline return value spill temp"
; V05 tmp2 [V05,T04] ( 4, 3 ) double -> mm0 "Inline stloc first use temp"
-; V06 tmp3 [V06,T03] ( 2, 2 ) long -> rsi single-def "field V01._ticks (fldOffset=0x0)" P-INDEP
-; V07 cse0 [V07,T07] ( 3, 1.50) double -> mm1 "CSE #02: moderate"
-; V08 cse1 [V08,T06] ( 3, 2.50) double -> mm1 "CSE #01: aggressive"
-; V09 rat0 [V09,T00] ( 3, 6 ) ref -> rax "delegate invoke call"
+; V06 tmp3 [V06,T01] ( 3, 5 ) ref -> r14 class-hnd single-def "Inlining Arg" <Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass10_0`1[double]>
+; V07 tmp4 [V07,T03] ( 2, 2 ) long -> rsi single-def "field V01._ticks (fldOffset=0x0)" P-INDEP
+; V08 cse0 [V08,T07] ( 3, 1.50) double -> mm1 "CSE #02: moderate"
+; V09 cse1 [V09,T05] ( 3, 2.50) double -> mm1 "CSE #01: aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M17470_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M17470_IG02: ; bbWeight=1, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rdx rdi]
+ push r15
+ push r14
+ push rbx
+ push rax
+ lea rbp, [rsp+0x20]
+ mov rbx, rdi
+ ; gcrRegs +[rbx]
+ mov r15, rdx
+ ; gcrRegs +[r15]
+ ;; size=18 bbWeight=1 PerfScore 6.00
+G_M17470_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rsi
vdivsd xmm0, xmm0, qword ptr [reloc @RWD00]
vmovsd xmm1, qword ptr [reloc @RWD08]
vucomisd xmm0, xmm1
ja SHORT G_M17470_IG05
;; size=31 bbWeight=1 PerfScore 26.33
-G_M17470_IG03: ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
+G_M17470_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
vmovsd xmm1, qword ptr [reloc @RWD16]
vucomisd xmm1, xmm0
ja SHORT G_M17470_IG04
+ vmovsd qword ptr [rbp-0x20], xmm0
jmp SHORT G_M17470_IG06
- ;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M17470_IG04: ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=21 bbWeight=0.50 PerfScore 4.50
+G_M17470_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
vmovaps xmm0, xmm1
+ vmovsd qword ptr [rbp-0x20], xmm0
jmp SHORT G_M17470_IG06
- ;; size=6 bbWeight=0.50 PerfScore 1.12
-G_M17470_IG05: ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
- vmovaps xmm0, xmm1
- ;; size=4 bbWeight=0.50 PerfScore 0.12
-G_M17470_IG06: ; bbWeight=1, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
+G_M17470_IG05: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ vmovsd qword ptr [rbp-0x20], xmm1
+ ;; size=5 bbWeight=0.50 PerfScore 0.50
+G_M17470_IG06: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rsi, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rsi]
- ; gcrRegs +[rax]
- mov rsi, rdi
+ mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
- mov rdi, gword ptr [rax+0x08]
- call [rax+0x18]System.Action`3[System.__Canon,double,System.__Canon]:Invoke(System.__Canon,double,System.__Canon):this
- ; gcrRegs -[rax rdx rsi rdi]
+ mov r14, gword ptr [rsi+0x18]
+ ; gcrRegs +[r14]
+ mov esi, dword ptr [r14+0x10]
+ ; gcrRegs -[rsi]
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ mov r11, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.ILogger:IsEnabled(int):ubyte:this
+ call [r11]Microsoft.Extensions.Logging.ILogger:IsEnabled(int):ubyte:this
+ ; gcrRegs -[rdi]
+ test eax, eax
+ je SHORT G_M17470_IG08
+ ;; size=41 bbWeight=1 PerfScore 11.00
+G_M17470_IG07: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ mov rdi, r14
+ ; gcrRegs +[rdi]
+ mov rsi, rbx
+ ; gcrRegs +[rsi]
+ vmovsd xmm0, qword ptr [rbp-0x20]
+ mov rdx, r15
+ ; gcrRegs +[rdx]
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass10_0`1[double]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,double,System.Exception):this
+ call [rax]Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass10_0`1[double]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,double,System.Exception):this
+ ; gcrRegs -[rdx rbx rsi rdi r14-r15]
+ ;; size=26 bbWeight=0.50 PerfScore 3.50
+G_M17470_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
- ;; size=24 bbWeight=1 PerfScore 7.75
-G_M17470_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=1 bbWeight=1 PerfScore 0.25
+G_M17470_IG09: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop r14
+ pop r15
pop rbp
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=11 bbWeight=1 PerfScore 3.25
RWD00 dq 40C3880000000000h ; 10000
RWD08 dq 430A36E2EB1C4328h ; 9.22337204e+14
RWD16 dq C30A36E2EB1C4328h ; -9.22337204e+14
-; Total bytes of code 87, prolog size 4, PerfScore 42.08, instruction count 23, allocated bytes for code 87 (MethodHash=bb4cbbc1) for method Microsoft.Extensions.Http.Logging.LogHelper:LogRequestFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException) (FullOpts)
+; Total bytes of code 165, prolog size 12, PerfScore 56.96, instruction count 45, allocated bytes for code 165 (MethodHash=bb4cbbc1) for method Microsoft.Extensions.Http.Logging.LogHelper:LogRequestFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException) (FullOpts)
; ============================================================ 78 (89.66 % of base) - Microsoft.Extensions.Http.Logging.LogHelper:LogRequestPipelineFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException) ; Assembly listing for method Microsoft.Extensions.Http.Logging.LogHelper:LogRequestPipelineFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException) (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rdi class-hnd single-def <Microsoft.Extensions.Logging.ILogger>
+; V00 arg0 [V00,T00] ( 4, 3.50) ref -> rbx class-hnd single-def <Microsoft.Extensions.Logging.ILogger>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.TimeSpan>
-; V02 arg2 [V02,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Net.Http.HttpRequestException>
+; V02 arg2 [V02,T02] ( 3, 2.50) ref -> r15 class-hnd single-def <System.Net.Http.HttpRequestException>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T05] ( 4, 2.50) double -> mm0 "Inline return value spill temp"
+; V04 tmp1 [V04,T06] ( 4, 2 ) double -> [rbp-0x20] "Inline return value spill temp"
; V05 tmp2 [V05,T04] ( 4, 3 ) double -> mm0 "Inline stloc first use temp"
-; V06 tmp3 [V06,T03] ( 2, 2 ) long -> rsi single-def "field V01._ticks (fldOffset=0x0)" P-INDEP
-; V07 cse0 [V07,T07] ( 3, 1.50) double -> mm1 "CSE #02: moderate"
-; V08 cse1 [V08,T06] ( 3, 2.50) double -> mm1 "CSE #01: aggressive"
-; V09 rat0 [V09,T00] ( 3, 6 ) ref -> rax "delegate invoke call"
+; V06 tmp3 [V06,T01] ( 3, 5 ) ref -> r14 class-hnd single-def "Inlining Arg" <Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass10_0`1[double]>
+; V07 tmp4 [V07,T03] ( 2, 2 ) long -> rsi single-def "field V01._ticks (fldOffset=0x0)" P-INDEP
+; V08 cse0 [V08,T07] ( 3, 1.50) double -> mm1 "CSE #02: moderate"
+; V09 cse1 [V09,T05] ( 3, 2.50) double -> mm1 "CSE #01: aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M19484_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M19484_IG02: ; bbWeight=1, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rdx rdi]
+ push r15
+ push r14
+ push rbx
+ push rax
+ lea rbp, [rsp+0x20]
+ mov rbx, rdi
+ ; gcrRegs +[rbx]
+ mov r15, rdx
+ ; gcrRegs +[r15]
+ ;; size=18 bbWeight=1 PerfScore 6.00
+G_M19484_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, rsi
vdivsd xmm0, xmm0, qword ptr [reloc @RWD00]
vmovsd xmm1, qword ptr [reloc @RWD08]
vucomisd xmm0, xmm1
ja SHORT G_M19484_IG05
;; size=31 bbWeight=1 PerfScore 26.33
-G_M19484_IG03: ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
+G_M19484_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
vmovsd xmm1, qword ptr [reloc @RWD16]
vucomisd xmm1, xmm0
ja SHORT G_M19484_IG04
+ vmovsd qword ptr [rbp-0x20], xmm0
jmp SHORT G_M19484_IG06
- ;; size=16 bbWeight=0.50 PerfScore 4.00
-G_M19484_IG04: ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=21 bbWeight=0.50 PerfScore 4.50
+G_M19484_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
vmovaps xmm0, xmm1
+ vmovsd qword ptr [rbp-0x20], xmm0
jmp SHORT G_M19484_IG06
- ;; size=6 bbWeight=0.50 PerfScore 1.12
-G_M19484_IG05: ; bbWeight=0.50, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
- vmovaps xmm0, xmm1
- ;; size=4 bbWeight=0.50 PerfScore 0.12
-G_M19484_IG06: ; bbWeight=1, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
+G_M19484_IG05: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ vmovsd qword ptr [rbp-0x20], xmm1
+ ;; size=5 bbWeight=0.50 PerfScore 0.50
+G_M19484_IG06: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rsi, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rsi]
- ; gcrRegs +[rax]
- mov rsi, rdi
+ mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
- mov rdi, gword ptr [rax+0x08]
- call [rax+0x18]System.Action`3[System.__Canon,double,System.__Canon]:Invoke(System.__Canon,double,System.__Canon):this
- ; gcrRegs -[rax rdx rsi rdi]
+ mov r14, gword ptr [rsi+0x18]
+ ; gcrRegs +[r14]
+ mov esi, dword ptr [r14+0x10]
+ ; gcrRegs -[rsi]
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ mov r11, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.ILogger:IsEnabled(int):ubyte:this
+ call [r11]Microsoft.Extensions.Logging.ILogger:IsEnabled(int):ubyte:this
+ ; gcrRegs -[rdi]
+ test eax, eax
+ je SHORT G_M19484_IG08
+ ;; size=41 bbWeight=1 PerfScore 11.00
+G_M19484_IG07: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ mov rdi, r14
+ ; gcrRegs +[rdi]
+ mov rsi, rbx
+ ; gcrRegs +[rsi]
+ vmovsd xmm0, qword ptr [rbp-0x20]
+ mov rdx, r15
+ ; gcrRegs +[rdx]
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass10_0`1[double]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,double,System.Exception):this
+ call [rax]Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass10_0`1[double]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,double,System.Exception):this
+ ; gcrRegs -[rdx rbx rsi rdi r14-r15]
+ ;; size=26 bbWeight=0.50 PerfScore 3.50
+G_M19484_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
- ;; size=24 bbWeight=1 PerfScore 7.75
-G_M19484_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=1 bbWeight=1 PerfScore 0.25
+G_M19484_IG09: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop r14
+ pop r15
pop rbp
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=11 bbWeight=1 PerfScore 3.25
RWD00 dq 40C3880000000000h ; 10000
RWD08 dq 430A36E2EB1C4328h ; 9.22337204e+14
RWD16 dq C30A36E2EB1C4328h ; -9.22337204e+14
-; Total bytes of code 87, prolog size 4, PerfScore 42.08, instruction count 23, allocated bytes for code 87 (MethodHash=0d4fb3e3) for method Microsoft.Extensions.Http.Logging.LogHelper:LogRequestPipelineFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException) (FullOpts)
+; Total bytes of code 165, prolog size 12, PerfScore 56.96, instruction count 45, allocated bytes for code 165 (MethodHash=0d4fb3e3) for method Microsoft.Extensions.Http.Logging.LogHelper:LogRequestPipelineFailed(Microsoft.Extensions.Logging.ILogger,System.TimeSpan,System.Net.Http.HttpRequestException) (FullOpts)
; ============================================================ 66 (44.90 % of base) - Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:CleanupCycleEnd(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.TimeSpan,int,int) ; Assembly listing for method Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:CleanupCycleEnd(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.TimeSpan,int,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; 0 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rdi class-hnd single-def <System.Lazy`1[Microsoft.Extensions.Logging.ILogger]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.TimeSpan>
; V02 arg2 [V02,T01] ( 3, 2.50) int -> rbx single-def
; V03 arg3 [V03,T02] ( 3, 2.50) int -> r15 single-def
-; V04 loc0 [V04 ] ( 2, 1.50) ref -> [rbp-0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.Extensions.Logging.ILogger>
+; V04 loc0 [V04 ] ( 2, 1.50) ref -> [rbp-0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.Extensions.Logging.ILogger>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T05] ( 2, 2 ) ref -> rsi class-hnd single-def "impAppendStmt" <Microsoft.Extensions.Logging.ILogger>
-; V07 tmp2 [V07,T06] ( 4, 2 ) double -> mm0 "Inline return value spill temp"
+; V06 tmp1 [V06,T04] ( 3, 3 ) ref -> r13 class-hnd single-def "impAppendStmt" <Microsoft.Extensions.Logging.ILogger>
+; V07 tmp2 [V07,T06] ( 4, 2 ) double -> [rbp-0x30] "Inline return value spill temp"
; V08 tmp3 [V08,T07] ( 4, 2 ) double -> mm0 single-def "Inline stloc first use temp"
-; V09 tmp4 [V09,T03] ( 2, 1.50) long -> r14 single-def "field V01._ticks (fldOffset=0x0)" P-INDEP
-; V10 cse0 [V10,T08] ( 3, 1.50) double -> mm1 "CSE #01: moderate"
-; V11 cse1 [V11,T09] ( 3, 1.50) double -> mm1 "CSE #02: moderate"
-; V12 rat0 [V12,T04] ( 3, 3 ) ref -> rax "delegate invoke call"
+; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> r14 class-hnd single-def "Inlining Arg" <Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass14_0`3[double,int,int]>
+; V10 tmp5 [V10,T03] ( 2, 1.50) long -> r14 single-def "field V01._ticks (fldOffset=0x0)" P-INDEP
+; V11 cse0 [V11,T08] ( 3, 1.50) double -> mm1 "CSE #01: moderate"
+; V12 cse1 [V12,T09] ( 3, 1.50) double -> mm1 "CSE #02: moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M28485_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
+ push r13
push rbx
- push rax
- lea rbp, [rsp+0x20]
+ sub rsp, 16
+ lea rbp, [rsp+0x30]
xor eax, eax
- mov qword ptr [rbp-0x20], rax
+ mov qword ptr [rbp-0x28], rax
mov r14, rsi
mov ebx, edx
mov r15d, ecx
- ;; size=26 bbWeight=1 PerfScore 7.50
-G_M28485_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=31 bbWeight=1 PerfScore 7.75
+G_M28485_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
- lea rsi, [rbp-0x20]
+ lea rsi, [rbp-0x28]
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:TryGetLogger(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],byref):ubyte
call [rax]Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:TryGetLogger(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],byref):ubyte
; gcrRegs -[rdi]
test eax, eax
- je SHORT G_M28485_IG07
- ;; size=20 bbWeight=1 PerfScore 5.00
+ je G_M28485_IG07
+ ;; size=24 bbWeight=1 PerfScore 5.00
G_M28485_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rsi, gword ptr [rbp-0x20]
- ; gcrRegs +[rsi]
+ mov r13, gword ptr [rbp-0x28]
+ ; gcrRegs +[r13]
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, r14
vdivsd xmm0, xmm0, qword ptr [reloc @RWD00]
vmovsd xmm1, qword ptr [reloc @RWD08]
vucomisd xmm0, xmm1
ja SHORT G_M28485_IG05
vmovsd xmm1, qword ptr [reloc @RWD16]
vucomisd xmm1, xmm0
ja SHORT G_M28485_IG04
+ vmovsd qword ptr [rbp-0x30], xmm0
jmp SHORT G_M28485_IG06
- ;; size=51 bbWeight=0.50 PerfScore 17.67
-G_M28485_IG04: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=56 bbWeight=0.50 PerfScore 18.17
+G_M28485_IG04: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
vmovaps xmm0, xmm1
+ vmovsd qword ptr [rbp-0x30], xmm0
jmp SHORT G_M28485_IG06
- ;; size=6 bbWeight=0.50 PerfScore 1.12
-G_M28485_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- vmovaps xmm0, xmm1
- ;; size=4 bbWeight=0.50 PerfScore 0.12
-G_M28485_IG06: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- mov rdx, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rdx]
- ; gcrRegs +[rax]
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
+G_M28485_IG05: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
+ vmovsd qword ptr [rbp-0x30], xmm1
+ ;; size=5 bbWeight=0.50 PerfScore 0.50
+G_M28485_IG06: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
+ mov rsi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rsi]
+ ; gcrRegs +[rsi]
+ mov r14, gword ptr [rsi+0x18]
+ ; gcrRegs +[r14]
+ mov esi, dword ptr [r14+0x10]
+ ; gcrRegs -[rsi]
+ mov rdi, r13
+ ; gcrRegs +[rdi]
+ mov r11, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.ILogger:IsEnabled(int):ubyte:this
+ call [r11]Microsoft.Extensions.Logging.ILogger:IsEnabled(int):ubyte:this
+ ; gcrRegs -[rdi]
+ test eax, eax
+ je SHORT G_M28485_IG07
+ mov rdi, r14
+ ; gcrRegs +[rdi]
+ mov rsi, r13
+ ; gcrRegs +[rsi]
+ vmovsd xmm0, qword ptr [rbp-0x30]
mov edx, ebx
mov ecx, r15d
xor r8, r8
; gcrRegs +[r8]
- mov rdi, gword ptr [rax+0x08]
- ; gcrRegs +[rdi]
- call [rax+0x18]System.Action`5[System.__Canon,double,int,int,System.__Canon]:Invoke(System.__Canon,double,int,int,System.__Canon):this
- ; gcrRegs -[rax rsi rdi r8]
- ;; size=28 bbWeight=0.50 PerfScore 4.00
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass14_0`3[double,int,int]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,double,int,int,System.Exception):this
+ call [rax]Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass14_0`3[double,int,int]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,double,int,int,System.Exception):this
+ ; gcrRegs -[rsi rdi r8 r13-r14]
+ ;; size=72 bbWeight=0.50 PerfScore 9.25
G_M28485_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M28485_IG08: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ add rsp, 16
pop rbx
+ pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.25
+ ;; size=13 bbWeight=1 PerfScore 3.75
RWD00 dq 40C3880000000000h ; 10000
RWD08 dq 430A36E2EB1C4328h ; 9.22337204e+14
RWD16 dq C30A36E2EB1C4328h ; -9.22337204e+14
-; Total bytes of code 147, prolog size 18, PerfScore 38.92, instruction count 44, allocated bytes for code 147 (MethodHash=1f1a90ba) for method Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:CleanupCycleEnd(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.TimeSpan,int,int) (FullOpts)
+; Total bytes of code 213, prolog size 23, PerfScore 46.29, instruction count 58, allocated bytes for code 213 (MethodHash=1f1a90ba) for method Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:CleanupCycleEnd(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.TimeSpan,int,int) (FullOpts)
; ============================================================ 63 (44.68 % of base) - Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:HandlerExpired(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.String,System.TimeSpan) ; Assembly listing for method Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:HandlerExpired(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.String,System.TimeSpan) (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rdi class-hnd single-def <System.Lazy`1[Microsoft.Extensions.Logging.ILogger]>
; V01 arg1 [V01,T01] ( 3, 2.50) ref -> rbx class-hnd single-def <System.String>
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.TimeSpan>
-; V03 loc0 [V03 ] ( 2, 1.50) ref -> [rbp-0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.Extensions.Logging.ILogger>
+; V03 loc0 [V03 ] ( 2, 1.50) ref -> [rbp-0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.Extensions.Logging.ILogger>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T04] ( 2, 2 ) ref -> rsi class-hnd single-def "impAppendStmt" <Microsoft.Extensions.Logging.ILogger>
-; V06 tmp2 [V06,T05] ( 4, 2 ) double -> mm0 "Inline return value spill temp"
+; V05 tmp1 [V05,T03] ( 3, 3 ) ref -> r14 class-hnd single-def "impAppendStmt" <Microsoft.Extensions.Logging.ILogger>
+; V06 tmp2 [V06,T05] ( 4, 2 ) double -> [rbp-0x28] "Inline return value spill temp"
; V07 tmp3 [V07,T06] ( 4, 2 ) double -> mm0 single-def "Inline stloc first use temp"
-; V08 tmp4 [V08,T02] ( 2, 1.50) long -> r15 single-def "field V02._ticks (fldOffset=0x0)" P-INDEP
-; V09 cse0 [V09,T07] ( 3, 1.50) double -> mm1 "CSE #01: moderate"
-; V10 cse1 [V10,T08] ( 3, 1.50) double -> mm1 "CSE #02: moderate"
-; V11 rat0 [V11,T03] ( 3, 3 ) ref -> rax "delegate invoke call"
+; V08 tmp4 [V08,T04] ( 3, 3 ) ref -> r15 class-hnd single-def "Inlining Arg" <Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass12_0`2[double,System.__Canon]>
+; V09 tmp5 [V09,T02] ( 2, 1.50) long -> r15 single-def "field V02._ticks (fldOffset=0x0)" P-INDEP
+; V10 cse0 [V10,T07] ( 3, 1.50) double -> mm1 "CSE #01: moderate"
+; V11 cse1 [V11,T08] ( 3, 1.50) double -> mm1 "CSE #02: moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M8583_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x20]
+ sub rsp, 24
+ lea rbp, [rsp+0x30]
xor eax, eax
- mov qword ptr [rbp-0x18], rax
+ mov qword ptr [rbp-0x20], rax
mov rbx, rsi
; gcrRegs +[rbx]
mov r15, rdx
- ;; size=25 bbWeight=1 PerfScore 5.50
-G_M8583_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=27 bbWeight=1 PerfScore 6.50
+G_M8583_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
- lea rsi, [rbp-0x18]
+ lea rsi, [rbp-0x20]
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:TryGetLogger(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],byref):ubyte
call [rax]Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:TryGetLogger(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],byref):ubyte
; gcrRegs -[rdi]
test eax, eax
- je SHORT G_M8583_IG07
- ;; size=20 bbWeight=1 PerfScore 5.00
+ je G_M8583_IG07
+ ;; size=24 bbWeight=1 PerfScore 5.00
G_M8583_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, gword ptr [rbp-0x18]
- ; gcrRegs +[rsi]
+ mov r14, gword ptr [rbp-0x20]
+ ; gcrRegs +[r14]
vxorps xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, r15
vdivsd xmm0, xmm0, qword ptr [reloc @RWD00]
vmovsd xmm1, qword ptr [reloc @RWD08]
vucomisd xmm0, xmm1
ja SHORT G_M8583_IG05
vmovsd xmm1, qword ptr [reloc @RWD16]
vucomisd xmm1, xmm0
ja SHORT G_M8583_IG04
+ vmovsd qword ptr [rbp-0x28], xmm0
jmp SHORT G_M8583_IG06
- ;; size=51 bbWeight=0.50 PerfScore 17.67
-G_M8583_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=56 bbWeight=0.50 PerfScore 18.17
+G_M8583_IG04: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
vmovaps xmm0, xmm1
+ vmovsd qword ptr [rbp-0x28], xmm0
jmp SHORT G_M8583_IG06
- ;; size=6 bbWeight=0.50 PerfScore 1.12
-G_M8583_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- vmovaps xmm0, xmm1
- ;; size=4 bbWeight=0.50 PerfScore 0.12
-G_M8583_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- mov rdx, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rdx]
- ; gcrRegs +[rax]
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
+G_M8583_IG05: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ vmovsd qword ptr [rbp-0x28], xmm1
+ ;; size=5 bbWeight=0.50 PerfScore 0.50
+G_M8583_IG06: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ mov rsi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rsi]
+ ; gcrRegs +[rsi]
+ mov r15, gword ptr [rsi+0x18]
+ ; gcrRegs +[r15]
+ mov esi, dword ptr [r15+0x10]
+ ; gcrRegs -[rsi]
+ mov rdi, r14
+ ; gcrRegs +[rdi]
+ mov r11, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.ILogger:IsEnabled(int):ubyte:this
+ call [r11]Microsoft.Extensions.Logging.ILogger:IsEnabled(int):ubyte:this
+ ; gcrRegs -[rdi]
+ test eax, eax
+ je SHORT G_M8583_IG07
+ mov rdi, r15
+ ; gcrRegs +[rdi]
+ mov rsi, r14
+ ; gcrRegs +[rsi]
+ vmovsd xmm0, qword ptr [rbp-0x28]
mov rdx, rbx
; gcrRegs +[rdx]
xor rcx, rcx
; gcrRegs +[rcx]
- mov rdi, gword ptr [rax+0x08]
- ; gcrRegs +[rdi]
- call [rax+0x18]System.Action`4[System.__Canon,double,System.__Canon,System.__Canon]:Invoke(System.__Canon,double,System.__Canon,System.__Canon):this
- ; gcrRegs -[rax rcx rdx rbx rsi rdi]
- ;; size=25 bbWeight=0.50 PerfScore 3.88
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass12_0`2[double,System.__Canon]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,double,System.__Canon,System.Exception):this
+ call [rax]Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass12_0`2[double,System.__Canon]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,double,System.__Canon,System.Exception):this
+ ; gcrRegs -[rcx rdx rbx rsi rdi r14-r15]
+ ;; size=69 bbWeight=0.50 PerfScore 9.12
G_M8583_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M8583_IG08: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
+ add rsp, 24
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 2.75
+ ;; size=11 bbWeight=1 PerfScore 3.25
RWD00 dq 40C3880000000000h ; 10000
RWD08 dq 430A36E2EB1C4328h ; 9.22337204e+14
RWD16 dq C30A36E2EB1C4328h ; -9.22337204e+14
-; Total bytes of code 141, prolog size 19, PerfScore 36.29, instruction count 40, allocated bytes for code 141 (MethodHash=1edcde78) for method Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:HandlerExpired(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.String,System.TimeSpan) (FullOpts)
+; Total bytes of code 204, prolog size 21, PerfScore 44.42, instruction count 54, allocated bytes for code 204 (MethodHash=1edcde78) for method Microsoft.Extensions.Http.DefaultHttpClientFactory+Log:HandlerExpired(System.Lazy`1[Microsoft.Extensions.Logging.ILogger],System.String,System.TimeSpan) (FullOpts)
; ============================================================ Larger list of diffs: https://gist.github.com/MihuBot/a415c280bc58fc3df81912e97c014815 |
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: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
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: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
mov rdx, 0xD1FFAB1E ; const ptr
- mov rcx, 0xD1FFAB1E ; const ptr
+ mov rax, 0xD1FFAB1E ; const ptr
test sil, sil
- mov rdx, gword ptr [rdx]
- ; gcrRegs +[rdx]
- cmove rdx, gword ptr [rcx]
- ;; size=30 bbWeight=0.50 PerfScore 2.88
-G_M41339_IG03: ; bbWeight=1, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
- mov rsi, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rsi]
- ; gcrRegs +[rax]
- mov rsi, rdi
+ mov rsi, gword ptr [rax]
; gcrRegs +[rsi]
- xor rcx, rcx
- ; gcrRegs +[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
- ; gcrRegs -[rcx rdx rsi rdi]
+ cmovne rsi, gword ptr [rdx]
+ ;; size=30 bbWeight=0.50 PerfScore 2.88
+G_M41339_IG03: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+ xor rdx, rdx
+ ; gcrRegs +[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
+ ; gcrRegs -[rdx rsi rdi] +[rax]
; gcr arg pop 0
nop
- ;; size=26 bbWeight=1 PerfScore 8.00
+ ;; size=15 bbWeight=1 PerfScore 3.75
G_M41339_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
add rsp, 16
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
G_M41339_IG05: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs -[rax] +[rsi]
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: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
mov rbx, rsi
; gcrRegs +[rbx]
cmp byte ptr [rbp-0x14], 0
je SHORT G_M41339_IG07
mov rdi, rbx
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; code for System.Data.Common.ADP:IsCatchableExceptionType(System.Exception):ubyte
call [rax]System.Data.Common.ADP:IsCatchableExceptionType(System.Exception):ubyte
; gcrRegs -[rsi rdi]
; gcr arg pop 0
test eax, eax
je SHORT G_M41339_IG07
mov rdi, 0xD1FFAB1E ; System.Reflection.TargetInvocationException
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
mov r15, rax
; gcrRegs +[r15]
mov rdi, r15
; gcrRegs +[rdi]
mov rsi, rbx
; gcrRegs +[rsi]
mov rax, 0xD1FFAB1E ; code for System.Reflection.TargetInvocationException:.ctor(System.Exception):this
; gcrRegs -[rax]
call [rax]System.Reflection.TargetInvocationException:.ctor(System.Exception):this
; gcrRegs -[rbx rsi rdi]
; gcr arg pop 0
mov rdi, r15
; gcrRegs +[rdi]
call CORINFO_HELP_THROW
; gcrRegs -[rdi r15]
; gcr arg pop 0
int3
;; size=73 bbWeight=0 PerfScore 0.00
G_M41339_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RETHROW
; gcr arg pop 0
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: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push rbx
push rax
lea rbp, [rsp+0x10]
;; size=8 bbWeight=1 PerfScore 3.50
G_M38219_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp edi, 53
ja SHORT G_M38219_IG04
;; size=5 bbWeight=1 PerfScore 1.25
G_M38219_IG03: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
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: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rsi, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rsi]
- ; gcrRegs +[rax]
- mov esi, edi
- mov rdi, gword ptr [rax+0x08]
- ; gcrRegs +[rdi]
- call [rax+0x18]System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+MapVersionSpecificCode:Invoke(Interop+Crypto+X509VerifyStatusCode):int:this
- ; gcrRegs -[rax rdi]
- ;; 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: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M38219_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
mov eax, 0x800
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, 0x1000
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, 0x8000
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, 0x4000
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, 512
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, 256
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, 0xD1FFAB1E
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, 0xD1FFAB1E
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, 16
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, 0x400
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 4
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M38219_IG18: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
mov eax, 32
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M38219_IG21: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
mov eax, 8
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, 64
jmp SHORT G_M38219_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 0x10000
jmp G_M38219_IG05
;; size=10 bbWeight=0.50 PerfScore 1.12
G_M38219_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M38219_IG26: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M38219_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.CryptographicException
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
mov rbx, rax
; gcrRegs +[rbx]
mov rdi, rbx
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptographicException:.ctor():this
; gcrRegs -[rax]
call [rax]System.Security.Cryptography.CryptographicException:.ctor():this
; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
call CORINFO_HELP_THROW
; gcrRegs -[rbx rdi]
int3
;; size=42 bbWeight=0 PerfScore 0.00
G_M38219_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.OutOfMemoryException
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
mov rbx, rax
; gcrRegs +[rbx]
mov rdi, rbx
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; code for System.OutOfMemoryException:.ctor():this
; gcrRegs -[rax]
call [rax]System.OutOfMemoryException:.ctor():this
; gcrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
call CORINFO_HELP_THROW
; gcrRegs -[rbx rdi]
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 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimePropertyInfo>
-; V03 tmp2 [V03,T02] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.__Canon>
+; V03 tmp2 [V03,T01] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Xml.Linq.XDocument>
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimePropertyInfo>
-; V05 tmp4 [V05,T03] ( 2, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimePropertyInfo>
+; V05 tmp4 [V05,T02] ( 2, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimePropertyInfo>
;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Reflection.RuntimeMethodInfo>
;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 tmp7 [V08,T06] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-; V09 tmp8 [V09,T04] ( 3, 3 ) ref -> rdi class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
+; V08 tmp7 [V08,T05] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V09 tmp8 [V09,T03] ( 3, 3 ) ref -> rdi class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
;* V10 tmp9 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
-; V12 tmp11 [V12,T07] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V13 cse0 [V13,T05] ( 3, 3 ) ref -> rdi "CSE #01: aggressive"
-; V14 rat0 [V14,T00] ( 3, 6 ) ref -> rax "delegate invoke call"
+; V12 tmp11 [V12,T06] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V13 cse0 [V13,T04] ( 3, 3 ) ref -> rdi "CSE #01: aggressive"
;
; Lcl frame size = 8
G_M47281_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push rbx
push rax
lea rbp, [rsp+0x10]
;; size=8 bbWeight=1 PerfScore 3.50
G_M47281_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
- mov rsi, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rsi]
- ; gcrRegs +[rax]
- mov rsi, rdi
- ; gcrRegs +[rsi]
- mov rdi, gword ptr [rax+0x08]
- call [rax+0x18]System.Func`2[System.__Canon,System.__Canon]:Invoke(System.__Canon):System.__Canon:this
- ; gcrRegs -[rsi rdi]
+ 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
+ ; gcrRegs -[rdi] +[rax]
mov rsi, rax
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
; gcrRegs +[rdi]
mov rdi, gword ptr [rdi+0x18]
xor rdx, rdx
; gcrRegs +[rdx]
test rdi, rdi
cmove rdi, rdx
test rdi, rdi
je SHORT G_M47281_IG04
mov edx, 60
; gcrRegs -[rdx]
xor rcx, rcx
; gcrRegs +[rcx]
xor r8, r8
; gcrRegs +[r8]
xor r9, r9
; gcrRegs +[r9]
mov rax, 0xD1FFAB1E
; gcrRegs -[rax]
mov rax, qword ptr [rax]
- ;; size=83 bbWeight=1 PerfScore 17.25
+ ;; size=74 bbWeight=1 PerfScore 13.25
G_M47281_IG03: ; bbWeight=1, epilog, nogc, extend
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: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx rsi rdi r8-r9]
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
mov rbx, rax
; gcrRegs +[rbx]
mov rax, 0xD1FFAB1E ; code for System.SR:get_Arg_GetMethNotFnd():System.String
; gcrRegs -[rax]
call [rax]System.SR:get_Arg_GetMethNotFnd():System.String
; gcrRegs +[rax]
mov rsi, rax
; gcrRegs +[rsi]
mov rdi, rbx
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String):this
; gcrRegs -[rax]
call [rax]System.ArgumentException:.ctor(System.String):this
; gcrRegs -[rsi rdi]
mov rdi, rbx
; gcrRegs +[rdi]
call CORINFO_HELP_THROW
; gcrRegs -[rbx rdi]
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)
; ============================================================ -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: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
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: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rax, gword ptr [rdi]
- ; gcrRegs +[rax]
- mov rdi, gword ptr [rax+0x08]
+ mov rdi, rsi
; gcrRegs +[rdi]
- call [rax+0x18]System.Func`2[System.__Canon,System.__Canon]:Invoke(System.__Canon):System.__Canon:this
- ; gcrRegs -[rsi rdi]
+ 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
+ ; gcrRegs -[rsi rdi] +[rax]
; gcr arg pop 0
mov gword ptr [rbp-0x18], rax
; GC ptr vars +{V02}
- ;; size=24 bbWeight=1 PerfScore 8.25
-G_M41944_IG03: ; bbWeight=1, gcVars=0000000000000080 {V02}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=21 bbWeight=1 PerfScore 4.75
+G_M41944_IG03: ; bbWeight=1, gcVars=0000000000000040 {V02}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
mov rdi, qword ptr [rbx+0x18]
mov rdi, qword ptr [rdi]
mov rcx, rax
; gcrRegs +[rcx]
test rcx, rcx
je SHORT G_M41944_IG06
;; size=15 bbWeight=1 PerfScore 5.50
G_M41944_IG04: ; bbWeight=0.50, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
cmp qword ptr [rcx], rdi
je SHORT G_M41944_IG06
;; size=5 bbWeight=0.50 PerfScore 2.00
G_M41944_IG05: ; bbWeight=0.25, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
mov rsi, rax
; gcrRegs +[rsi]
mov rcx, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTANY
call [rcx]CORINFO_HELP_CHKCASTANY
; gcrRegs -[rsi]
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
mov rax, gword ptr [rbp-0x18]
;; size=22 bbWeight=0.25 PerfScore 1.19
G_M41944_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
; GC ptr vars -{V02}
mov rax, rcx
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
G_M41944_IG07: ; bbWeight=1, epilog, nogc, extend
add rsp, 24
pop rbx
pop rbp
ret
;; size=7 bbWeight=1 PerfScore 2.25
G_M41944_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs -[rax rcx]
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: ; bbWeight=0, gcVars=0000000000000080 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars +{V02}
+G_M41944_IG09: ; bbWeight=0, gcVars=0000000000000040 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V02 V06}
mov rsi, gword ptr [rbp-0x18]
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; System.IDisposable
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; GC ptr vars -{V02}
+ ; GC ptr vars -{V02 V06}
call [rax]CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
test rax, rax
je SHORT G_M41944_IG10
mov rdi, rax
; gcrRegs +[rdi]
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
; gcrRegs -[rax rdi]
; gcr arg pop 0
;; size=47 bbWeight=0 PerfScore 0.00
G_M41944_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RETHROW
; gcr arg pop 0
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 20 minutes.
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: