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] xtqqczze/dotnet-runtime/ThrowArgumentOutOfRangeExceptionExceptionArgumentLength #557
Comments
Top method improvements-302 (-5.21 % of base) - System.Text.Json.JsonDocument:TryGetValue(int,byref):ubyte:this ; Assembly listing for method System.Text.Json.JsonDocument:TryGetValue(int,byref):ubyte:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 16 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 5, 5 ) ref -> rdi this class-hnd single-def <System.Text.Json.JsonDocument>
; V01 arg1 [V01,T01] ( 6, 4 ) int -> rsi single-def
; V02 arg2 [V02,T05] ( 4, 3 ) byref -> rbx single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Text.Json.JsonDocument+DbRow>
;* V04 loc1 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ubyte]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V08 tmp2 [V08 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V09 tmp3 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V10 tmp4 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V12 tmp6 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
; V13 tmp7 [V13,T02] ( 4, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <ubyte[]>
;* V14 tmp8 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V15 tmp9 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]>
; V16 tmp10 [V16,T16] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
; V17 tmp11 [V17,T18] ( 2, 2 ) int -> rcx "Inlining Arg"
;* V18 tmp12 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V19 tmp13 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V20 tmp14 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V21 tmp15 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V22 tmp16 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V23 tmp17 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
; V24 tmp18 [V24,T10] ( 3, 4 ) ubyte -> rsi "Inlining Arg"
;* V25 tmp19 [V25 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ubyte]>
; V26 tmp20 [V26,T07] ( 6, 4 ) byref -> r12 "Inline stloc first use temp"
; V27 tmp21 [V27,T08] ( 6, 4 ) int -> rax "Inline stloc first use temp"
; V28 tmp22 [V28,T03] ( 4, 6 ) byref -> r13 single-def "Inlining Arg"
; V29 tmp23 [V29,T06] ( 7, 4.50) ref -> rdi class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V30 tmp24 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V31 tmp25 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Buffers.MemoryManager`1[ubyte]>
;* V32 tmp26 [V32 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]>
;* V33 tmp27 [V33 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
; V34 tmp28 [V34,T20] ( 3, 1.50) long -> rdi "Inline stloc first use temp"
; V35 tmp29 [V35,T21] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
;* V36 tmp30 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <ubyte[]>
;* V37 tmp31 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
; V38 tmp32 [V38,T17] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
;* V39 tmp33 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
; V40 tmp34 [V40,T04] ( 3, 6 ) int -> rsi "Inlining Arg"
;* V41 tmp35 [V41 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V42 tmp36 [V42 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V43 tmp37 [V43,T11] ( 3, 3 ) int -> r15 "field V03._location (fldOffset=0x0)" P-INDEP
; V44 tmp38 [V44,T12] ( 3, 3 ) int -> r14 "field V03._sizeOrLengthUnion (fldOffset=0x4)" P-INDEP
; V45 tmp39 [V45,T19] ( 2, 2 ) int -> rax "field V03._numberOfRowsAndTypeUnion (fldOffset=0x8)" P-INDEP
;* V46 tmp40 [V46 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp41 [V47 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
;* V48 tmp42 [V48 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V49 tmp43 [V49 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
;* V50 tmp44 [V50 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V51 tmp45 [V51 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V52 tmp46 [V52 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V53 tmp47 [V53 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
; V54 tmp48 [V54,T09] ( 5, 4 ) byref -> rax "field V12._reference (fldOffset=0x0)" P-INDEP
; V55 tmp49 [V55,T14] ( 3, 2 ) int -> rcx "field V12._length (fldOffset=0x8)" P-INDEP
; V56 tmp50 [V56,T23] ( 2, 1 ) byref -> rax single-def "field V14._reference (fldOffset=0x0)" P-INDEP
; V57 tmp51 [V57,T25] ( 2, 1 ) int -> rcx "field V14._length (fldOffset=0x8)" P-INDEP
;* V58 tmp52 [V58 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V59 tmp53 [V59 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V60 tmp54 [V60 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP
;* V61 tmp55 [V61 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
;* V62 tmp56 [V62 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
;* V63 tmp57 [V63 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
;* V64 tmp58 [V64 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V65 tmp59 [V65 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
;* V66 tmp60 [V66 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP
;* V67 tmp61 [V67 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
;* V68 tmp62 [V68 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
;* V69 tmp63 [V69 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
;* V70 tmp64 [V70 ] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V71 tmp65 [V71 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
;* V72 tmp66 [V72 ] ( 0, 0 ) byref -> zero-ref "field V32._reference (fldOffset=0x0)" P-DEP
;* V73 tmp67 [V73 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-DEP
; V74 tmp68 [V74,T24] ( 2, 1 ) byref -> r12 "field V33._reference (fldOffset=0x0)" P-INDEP
; V75 tmp69 [V75,T26] ( 2, 1 ) int -> rax "field V33._length (fldOffset=0x8)" P-INDEP
;* V76 tmp70 [V76 ] ( 0, 0 ) byref -> zero-ref single-def "field V39._reference (fldOffset=0x0)" P-INDEP
;* V77 tmp71 [V77 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
; V78 tmp72 [V78,T13] ( 3, 2 ) byref -> rdi single-def "field V41._reference (fldOffset=0x0)" P-INDEP
; V79 tmp73 [V79,T15] ( 3, 2 ) int -> rsi "field V41._length (fldOffset=0x8)" P-INDEP
; V80 cse0 [V80,T22] ( 3, 1.50) int -> rcx "CSE #01: moderate"
;
; Lcl frame size = 8
G_M7670_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
lea rbp, [rsp+0x30]
mov rbx, rdx
;; size=19 bbWeight=1 PerfScore 7.75
G_M7670_IG02:
cmp dword ptr [rdi+0x2C], 0
- je G_M7670_IG17
+ je G_M7670_IG16
mov rax, gword ptr [rdi+0x30]
test rax, rax
je SHORT G_M7670_IG04
;; size=19 bbWeight=1 PerfScore 7.25
G_M7670_IG03:
mov ecx, dword ptr [rax+0x08]
cmp ecx, esi
- jb G_M7670_IG16
+ jb G_M7670_IG15
mov edx, esi
lea rax, bword ptr [rax+rdx+0x10]
sub ecx, esi
jmp SHORT G_M7670_IG05
;; size=22 bbWeight=0.50 PerfScore 3.38
G_M7670_IG04:
test esi, esi
- jne G_M7670_IG16
+ jne G_M7670_IG15
xor rax, rax
xor ecx, ecx
;; size=12 bbWeight=0.50 PerfScore 0.88
G_M7670_IG05:
cmp ecx, 12
jl G_M7670_IG15
mov r15d, dword ptr [rax]
mov r14d, dword ptr [rax+0x04]
mov eax, dword ptr [rax+0x08]
shr eax, 28
movzx rsi, al
cmp esi, 7
jne G_M7670_IG14
lea r13, bword ptr [rdi+0x20]
xor r12, r12
xor eax, eax
mov rdi, gword ptr [r13]
test rdi, rdi
je SHORT G_M7670_IG09
;; size=53 bbWeight=1 PerfScore 13.50
G_M7670_IG06:
mov rax, qword ptr [rdi]
test dword ptr [rax], 0xD1FFAB1E
jne SHORT G_M7670_IG07
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x28]System.Buffers.MemoryManager`1[ubyte]:GetSpan():System.Span`1[ubyte]:this
mov r12, rax
mov eax, edx
jmp SHORT G_M7670_IG08
;; size=28 bbWeight=0.50 PerfScore 7.75
G_M7670_IG07:
lea r12, bword ptr [rdi+0x10]
mov eax, dword ptr [rdi+0x08]
;; size=7 bbWeight=0.50 PerfScore 1.25
G_M7670_IG08:
mov edi, dword ptr [r13+0x08]
and edi, 0xD1FFAB1E
mov esi, dword ptr [r13+0x0C]
mov edx, esi
add rdx, rdi
mov eax, eax
cmp rdx, rax
- ja G_M7670_IG16
+ ja SHORT G_M7670_IG15
add r12, rdi
mov eax, esi
- ;; size=35 bbWeight=0.50 PerfScore 3.38
+ ;; size=31 bbWeight=0.50 PerfScore 3.38
G_M7670_IG09:
mov esi, r14d
and esi, 0xD1FFAB1E
mov edi, r15d
mov edx, esi
add rdi, rdx
mov edx, eax
cmp rdi, rdx
- ja SHORT G_M7670_IG16
+ ja SHORT G_M7670_IG15
mov edi, r15d
add rdi, r12
test r14d, r14d
jl SHORT G_M7670_IG12
;; size=35 bbWeight=1 PerfScore 4.50
G_M7670_IG10:
mov rdx, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.Json.JsonReaderHelper:TryDecodeBase64(System.ReadOnlySpan`1[ubyte],byref):ubyte
call [rax]System.Text.Json.JsonReaderHelper:TryDecodeBase64(System.ReadOnlySpan`1[ubyte],byref):ubyte
nop
;; size=16 bbWeight=0.50 PerfScore 1.88
G_M7670_IG11:
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_M7670_IG12:
mov rdx, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.Json.JsonReaderHelper:TryGetUnescapedBase64Bytes(System.ReadOnlySpan`1[ubyte],byref):ubyte
call [rax]System.Text.Json.JsonReaderHelper:TryGetUnescapedBase64Bytes(System.ReadOnlySpan`1[ubyte],byref):ubyte
nop
;; size=16 bbWeight=0.50 PerfScore 1.88
G_M7670_IG13:
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_M7670_IG14:
mov edi, 7
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowJsonElementWrongTypeException(ubyte,ubyte)
call [rax]System.Text.Json.ThrowHelper:ThrowJsonElementWrongTypeException(ubyte,ubyte)
int3
;; size=18 bbWeight=0 PerfScore 0.00
G_M7670_IG15:
- mov edi, 40
- mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
- call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
- int3
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M7670_IG16:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M7670_IG17:
+G_M7670_IG16:
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowObjectDisposedException_JsonDocument()
call [rax]System.Text.Json.ThrowHelper:ThrowObjectDisposedException_JsonDocument()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 354, prolog size 16, PerfScore 57.62, instruction count 111, allocated bytes for code 354 (MethodHash=456ee209) for method System.Text.Json.JsonDocument:TryGetValue(int,byref):ubyte:this (FullOpts)
+; Total bytes of code 332, prolog size 16, PerfScore 57.62, instruction count 107, allocated bytes for code 332 (MethodHash=456ee209) for method System.Text.Json.JsonDocument:TryGetValue(int,byref):ubyte:this (FullOpts) -40 (-5.12 % of base) - Microsoft.Extensions.Configuration.Json.JsonConfigurationFileParser:VisitObjectElement(System.Text.Json.JsonElement):this ; Assembly listing for method Microsoft.Extensions.Configuration.Json.JsonConfigurationFileParser:VisitObjectElement(System.Text.Json.JsonElement):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 36 single block inlinees; 18 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T02] ( 6, 51 ) ref -> rbx this class-hnd single-def <Microsoft.Extensions.Configuration.Json.JsonConfigurationFileParser>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Text.Json.JsonElement>
; V02 loc0 [V02,T06] ( 3, 18 ) ubyte -> [rbp-0x2C]
;* V03 loc1 [V03 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op <System.Text.Json.JsonElement+ObjectEnumerator>
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] ld-addr-op <System.Text.Json.JsonElement+ObjectEnumerator>
;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op <System.Text.Json.JsonProperty>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Text.Json.JsonElement>
;* V08 tmp2 [V08 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
;* V09 tmp3 [V09 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement+ObjectEnumerator>
; V10 tmp4 [V10,T41] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
; V11 tmp5 [V11,T27] ( 3, 2 ) ubyte -> rcx "Inline return value spill temp"
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Text.Json.JsonDocument>
;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref single-def
;* V14 tmp8 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V15 tmp9 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V16 tmp10 [V16 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V18 tmp12 [V18 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V19 tmp13 [V19 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
; V20 tmp14 [V20,T18] ( 5, 5 ) ref -> rcx class-hnd single-def "Inlining Arg" <ubyte[]>
; V21 tmp15 [V21,T19] ( 5, 5 ) int -> r8 "Inlining Arg"
;* V22 tmp16 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V23 tmp17 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]>
; V24 tmp18 [V24,T31] ( 2, 2 ) byref -> r9 single-def "Inlining Arg"
; V25 tmp19 [V25,T33] ( 2, 2 ) int -> rcx "Inlining Arg"
;* V26 tmp20 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V27 tmp21 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V28 tmp22 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V29 tmp23 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V30 tmp24 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V31 tmp25 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V32 tmp26 [V32 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Text.Json.JsonElement>
; V33 tmp27 [V33,T28] ( 3, 2 ) int -> r14 "Inline return value spill temp"
;* V34 tmp28 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
;* V35 tmp29 [V35 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V36 tmp30 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.JsonDocument+DbRow>
;* V37 tmp31 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V38 tmp32 [V38 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V39 tmp33 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V40 tmp34 [V40 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V41 tmp35 [V41 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V42 tmp36 [V42 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
; V43 tmp37 [V43,T12] ( 5, 7 ) ref -> rax class-hnd single-def "Inlining Arg" <ubyte[]>
;* V44 tmp38 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V45 tmp39 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]>
; V46 tmp40 [V46,T32] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
; V47 tmp41 [V47,T34] ( 2, 2 ) int -> rax "Inlining Arg"
;* V48 tmp42 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V49 tmp43 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V50 tmp44 [V50 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V51 tmp45 [V51 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V52 tmp46 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V53 tmp47 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V54 tmp48 [V54 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "Inline stloc first use temp" <System.Text.Json.JsonElement+ObjectEnumerator>
;* V55 tmp49 [V55 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] "Inline return value spill temp" <System.Text.Json.JsonProperty>
;* V56 tmp50 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
;* V57 tmp51 [V57 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonProperty>
;* V58 tmp52 [V58 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.Json.JsonProperty>
;* V59 tmp53 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.Json.JsonDocument>
;* V60 tmp54 [V60 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V61 tmp55 [V61 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Text.Json.JsonElement>
;* V62 tmp56 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.String>
; V63 tmp57 [V63,T04] ( 2, 32 ) ref -> rsi
;* V64 tmp58 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.JsonElement>
; V65 tmp59 [V65,T42] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.InvalidOperationException>
;* V66 tmp60 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.Json.JsonDocument>
;* V67 tmp61 [V67 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V68 tmp62 [V68 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V69 tmp63 [V69,T15] ( 3, 6 ) int -> rsi "Inline return value spill temp"
;* V70 tmp64 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.Json.JsonDocument>
;* V71 tmp65 [V71 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V72 tmp66 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.JsonDocument+DbRow>
;* V73 tmp67 [V73 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V74 tmp68 [V74 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V75 tmp69 [V75 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V76 tmp70 [V76 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V77 tmp71 [V77 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V78 tmp72 [V78 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
; V79 tmp73 [V79,T05] ( 5, 20 ) ref -> rsi class-hnd "Inlining Arg" <ubyte[]>
;* V80 tmp74 [V80 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V81 tmp75 [V81 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]>
; V82 tmp76 [V82,T09] ( 2, 8 ) byref -> rdi "Inlining Arg"
; V83 tmp77 [V83,T10] ( 2, 8 ) int -> rsi "Inlining Arg"
;* V84 tmp78 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V85 tmp79 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V86 tmp80 [V86 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V87 tmp81 [V87 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V88 tmp82 [V88 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V89 tmp83 [V89 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
; V90 tmp84 [V90,T13] ( 5, 4 ) ref -> rsi single-def "field V01._parent (fldOffset=0x0)" P-INDEP
; V91 tmp85 [V91,T11] ( 9, 5.50) int -> rdx single-def "field V01._idx (fldOffset=0x8)" P-INDEP
;* V92 tmp86 [V92 ] ( 0, 0 ) ref -> zero-ref "field V07._parent (fldOffset=0x0)" P-INDEP
;* V93 tmp87 [V93 ] ( 0, 0 ) int -> zero-ref "field V07._idx (fldOffset=0x8)" P-INDEP
;* V94 tmp88 [V94 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V95 tmp89 [V95 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
;* V96 tmp90 [V96 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
;* V97 tmp91 [V97 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
; V98 tmp92 [V98,T24] ( 3, 2 ) byref -> r9 "field V19._reference (fldOffset=0x0)" P-INDEP
; V99 tmp93 [V99,T35] ( 3, 1.50) int -> rcx "field V19._length (fldOffset=0x8)" P-INDEP
; V100 tmp94 [V100,T36] ( 2, 1 ) byref -> r9 single-def "field V22._reference (fldOffset=0x0)" P-INDEP
; V101 tmp95 [V101,T38] ( 2, 1 ) int -> rcx single-def "field V22._length (fldOffset=0x8)" P-INDEP
;* V102 tmp96 [V102 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP
;* V103 tmp97 [V103 ] ( 0, 0 ) int -> zero-ref single-def "field V23._length (fldOffset=0x8)" P-INDEP
;* V104 tmp98 [V104 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP
;* V105 tmp99 [V105 ] ( 0, 0 ) int -> zero-ref single-def "field V26._length (fldOffset=0x8)" P-INDEP
;* V106 tmp100 [V106 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
;* V107 tmp101 [V107 ] ( 0, 0 ) int -> zero-ref single-def "field V27._length (fldOffset=0x8)" P-INDEP
;* V108 tmp102 [V108 ] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V109 tmp103 [V109 ] ( 0, 0 ) int -> zero-ref single-def "field V30._length (fldOffset=0x8)" P-INDEP
;* V110 tmp104 [V110 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP
;* V111 tmp105 [V111 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
;* V112 tmp106 [V112 ] ( 0, 0 ) ref -> zero-ref single-def "field V32._parent (fldOffset=0x0)" P-INDEP
;* V113 tmp107 [V113 ] ( 0, 0 ) int -> zero-ref single-def "field V32._idx (fldOffset=0x8)" P-INDEP
;* V114 tmp108 [V114 ] ( 0, 0 ) int -> zero-ref "field V36._location (fldOffset=0x0)" P-INDEP
;* V115 tmp109 [V115 ] ( 0, 0 ) int -> zero-ref "field V36._sizeOrLengthUnion (fldOffset=0x4)" P-INDEP
; V116 tmp110 [V116,T23] ( 3, 2.50) int -> rdi single-def "field V36._numberOfRowsAndTypeUnion (fldOffset=0x8)" P-INDEP
;* V117 tmp111 [V117 ] ( 0, 0 ) byref -> zero-ref "field V40._reference (fldOffset=0x0)" P-INDEP
;* V118 tmp112 [V118 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
;* V119 tmp113 [V119 ] ( 0, 0 ) byref -> zero-ref "field V41._reference (fldOffset=0x0)" P-INDEP
;* V120 tmp114 [V120 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
; V121 tmp115 [V121,T25] ( 3, 2 ) byref -> rdi "field V42._reference (fldOffset=0x0)" P-INDEP
; V122 tmp116 [V122,T29] ( 3, 2 ) int -> rax "field V42._length (fldOffset=0x8)" P-INDEP
; V123 tmp117 [V123,T37] ( 2, 1 ) byref -> rdi single-def "field V44._reference (fldOffset=0x0)" P-INDEP
; V124 tmp118 [V124,T39] ( 2, 1 ) int -> rax single-def "field V44._length (fldOffset=0x8)" P-INDEP
;* V125 tmp119 [V125 ] ( 0, 0 ) byref -> zero-ref single-def "field V45._reference (fldOffset=0x0)" P-INDEP
;* V126 tmp120 [V126 ] ( 0, 0 ) int -> zero-ref single-def "field V45._length (fldOffset=0x8)" P-INDEP
;* V127 tmp121 [V127 ] ( 0, 0 ) byref -> zero-ref single-def "field V48._reference (fldOffset=0x0)" P-INDEP
;* V128 tmp122 [V128 ] ( 0, 0 ) int -> zero-ref single-def "field V48._length (fldOffset=0x8)" P-INDEP
;* V129 tmp123 [V129 ] ( 0, 0 ) byref -> zero-ref single-def "field V49._reference (fldOffset=0x0)" P-INDEP
;* V130 tmp124 [V130 ] ( 0, 0 ) int -> zero-ref single-def "field V49._length (fldOffset=0x8)" P-INDEP
;* V131 tmp125 [V131 ] ( 0, 0 ) byref -> zero-ref single-def "field V52._reference (fldOffset=0x0)" P-INDEP
;* V132 tmp126 [V132 ] ( 0, 0 ) int -> zero-ref single-def "field V52._length (fldOffset=0x8)" P-INDEP
;* V133 tmp127 [V133 ] ( 0, 0 ) byref -> zero-ref single-def "field V53._reference (fldOffset=0x0)" P-INDEP
;* V134 tmp128 [V134 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
;* V135 tmp129 [V135 ] ( 0, 0 ) ref -> zero-ref "field V56._parent (fldOffset=0x0)" P-INDEP
;* V136 tmp130 [V136 ] ( 0, 0 ) int -> zero-ref "field V56._idx (fldOffset=0x8)" P-INDEP
;* V137 tmp131 [V137 ] ( 0, 0 ) ref -> zero-ref "field V61._parent (fldOffset=0x0)" P-INDEP
;* V138 tmp132 [V138 ] ( 0, 0 ) int -> zero-ref "field V61._idx (fldOffset=0x8)" P-INDEP
;* V139 tmp133 [V139 ] ( 0, 0 ) ref -> zero-ref "field V64._parent (fldOffset=0x0)" P-INDEP
;* V140 tmp134 [V140 ] ( 0, 0 ) int -> zero-ref "field V64._idx (fldOffset=0x8)" P-INDEP
;* V141 tmp135 [V141 ] ( 0, 0 ) int -> zero-ref "field V72._location (fldOffset=0x0)" P-INDEP
;* V142 tmp136 [V142 ] ( 0, 0 ) int -> zero-ref "field V72._sizeOrLengthUnion (fldOffset=0x4)" P-INDEP
; V143 tmp137 [V143,T16] ( 3, 6 ) int -> rsi "field V72._numberOfRowsAndTypeUnion (fldOffset=0x8)" P-INDEP
;* V144 tmp138 [V144 ] ( 0, 0 ) byref -> zero-ref "field V76._reference (fldOffset=0x0)" P-INDEP
;* V145 tmp139 [V145 ] ( 0, 0 ) int -> zero-ref "field V76._length (fldOffset=0x8)" P-INDEP
;* V146 tmp140 [V146 ] ( 0, 0 ) byref -> zero-ref "field V77._reference (fldOffset=0x0)" P-INDEP
;* V147 tmp141 [V147 ] ( 0, 0 ) int -> zero-ref "field V77._length (fldOffset=0x8)" P-INDEP
; V148 tmp142 [V148,T14] ( 3, 6 ) byref -> rdi "field V78._reference (fldOffset=0x0)" P-INDEP
; V149 tmp143 [V149,T17] ( 3, 6 ) int -> rsi "field V78._length (fldOffset=0x8)" P-INDEP
; V150 tmp144 [V150,T20] ( 2, 4 ) byref -> rdi "field V80._reference (fldOffset=0x0)" P-INDEP
; V151 tmp145 [V151,T21] ( 2, 4 ) int -> rsi "field V80._length (fldOffset=0x8)" P-INDEP
;* V152 tmp146 [V152 ] ( 0, 0 ) byref -> zero-ref "field V81._reference (fldOffset=0x0)" P-INDEP
;* V153 tmp147 [V153 ] ( 0, 0 ) int -> zero-ref "field V81._length (fldOffset=0x8)" P-INDEP
;* V154 tmp148 [V154 ] ( 0, 0 ) byref -> zero-ref "field V84._reference (fldOffset=0x0)" P-INDEP
;* V155 tmp149 [V155 ] ( 0, 0 ) int -> zero-ref "field V84._length (fldOffset=0x8)" P-INDEP
;* V156 tmp150 [V156 ] ( 0, 0 ) byref -> zero-ref "field V85._reference (fldOffset=0x0)" P-INDEP
;* V157 tmp151 [V157 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP
;* V158 tmp152 [V158 ] ( 0, 0 ) byref -> zero-ref "field V88._reference (fldOffset=0x0)" P-INDEP
;* V159 tmp153 [V159 ] ( 0, 0 ) int -> zero-ref "field V88._length (fldOffset=0x8)" P-INDEP
;* V160 tmp154 [V160 ] ( 0, 0 ) byref -> zero-ref "field V89._reference (fldOffset=0x0)" P-INDEP
;* V161 tmp155 [V161 ] ( 0, 0 ) int -> zero-ref "field V89._length (fldOffset=0x8)" P-INDEP
; V162 tmp156 [V162,T00] ( 16, 65 ) int -> r13 "V03.[000..004)"
; V163 tmp157 [V163,T08] ( 3, 13 ) int -> r14 single-def "V03.[004..008)"
; V164 tmp158 [V164,T07] ( 4, 13 ) ref -> r12 single-def "V03.[008..016)"
; V165 tmp159 [V165,T22] ( 2, 3 ) int -> [rbp-0x30] spill-single-def "V03.[016..020)"
;* V166 tmp160 [V166 ] ( 0, 0 ) ref -> zero-ref "V05.[000..008)"
;* V167 tmp161 [V167 ] ( 0, 0 ) ref -> zero-ref "V05.[008..016)"
;* V168 tmp162 [V168 ] ( 0, 0 ) int -> zero-ref "V05.[016..020)"
;* V169 tmp163 [V169 ] ( 0, 0 ) int -> zero-ref single-def "V09.[000..004)"
;* V170 tmp164 [V170 ] ( 0, 0 ) int -> zero-ref "V09.[004..008)"
;* V171 tmp165 [V171 ] ( 0, 0 ) ref -> zero-ref single-def "V09.[008..016)"
;* V172 tmp166 [V172 ] ( 0, 0 ) int -> zero-ref single-def "V09.[016..020)"
;* V173 tmp167 [V173 ] ( 0, 0 ) int -> zero-ref "V54.[000..004)"
;* V174 tmp168 [V174 ] ( 0, 0 ) int -> zero-ref single-def "V54.[004..008)"
;* V175 tmp169 [V175 ] ( 0, 0 ) ref -> zero-ref single-def "V54.[008..016)"
;* V176 tmp170 [V176 ] ( 0, 0 ) int -> zero-ref single-def "V54.[016..020)"
;* V177 tmp171 [V177 ] ( 0, 0 ) ref -> zero-ref "V57.[000..008)"
;* V178 tmp172 [V178 ] ( 0, 0 ) ref -> zero-ref "V57.[008..016)"
;* V179 tmp173 [V179 ] ( 0, 0 ) int -> zero-ref "V57.[016..020)"
;* V180 tmp174 [V180 ] ( 0, 0 ) ref -> zero-ref "V55.[000..008)"
; V181 tmp175 [V181,T01] ( 5, 64 ) ref -> r15 "V55.[008..016)"
; V182 tmp176 [V182,T03] ( 4, 48 ) int -> [rbp-0x34] "V55.[016..020)"
;* V183 tmp177 [V183 ] ( 0, 0 ) ref -> zero-ref "V58.[000..008)"
;* V184 tmp178 [V184 ] ( 0, 0 ) ref -> zero-ref "V58.[008..016)"
;* V185 tmp179 [V185 ] ( 0, 0 ) int -> zero-ref "V58.[016..020)"
; V186 PSPSym [V186,T40] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
; V187 cse0 [V187,T30] ( 3, 2 ) int -> rdi "CSE #02: conservative"
; V188 cse1 [V188,T26] ( 3, 2 ) ref -> rax "CSE #03: conservative"
;
; Lcl frame size = 24
G_M24720_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 24
lea rbp, [rsp+0x40]
mov qword ptr [rbp-0x40], rsp
mov rbx, rdi
;; size=26 bbWeight=1 PerfScore 8.00
G_M24720_IG02:
mov r15d, 1
test rsi, rsi
- je G_M24720_IG36
+ je G_M24720_IG34
;; size=15 bbWeight=1 PerfScore 1.50
G_M24720_IG03:
mov edi, dword ptr [rsi+0x2C]
test edi, edi
- je G_M24720_IG35
+ je G_M24720_IG33
mov rax, gword ptr [rsi+0x30]
mov rcx, rax
lea r8d, [rdx+0x08]
test rcx, rcx
je SHORT G_M24720_IG04
cmp dword ptr [rcx+0x08], r8d
- jb G_M24720_IG34
+ jb G_M24720_IG32
mov r9d, r8d
lea r9, bword ptr [rcx+r9+0x10]
mov ecx, dword ptr [rcx+0x08]
sub ecx, r8d
jmp SHORT G_M24720_IG05
;; size=53 bbWeight=0.50 PerfScore 8.38
G_M24720_IG04:
test r8d, r8d
- jne G_M24720_IG34
+ jne G_M24720_IG32
xor r9, r9
xor ecx, ecx
;; size=14 bbWeight=0.50 PerfScore 0.88
G_M24720_IG05:
cmp ecx, 4
- jl G_M24720_IG33
+ jl G_M24720_IG32
;; size=9 bbWeight=0.50 PerfScore 0.62
G_M24720_IG06:
mov ecx, dword ptr [r9]
shr ecx, 28
movzx rcx, cl
cmp ecx, 1
- jne G_M24720_IG32
+ jne G_M24720_IG31
test edi, edi
- je G_M24720_IG35
+ je G_M24720_IG33
test rax, rax
je SHORT G_M24720_IG08
;; size=31 bbWeight=1 PerfScore 6.50
G_M24720_IG07:
cmp dword ptr [rax+0x08], edx
- jb G_M24720_IG34
+ jb G_M24720_IG32
mov edi, edx
lea rdi, bword ptr [rax+rdi+0x10]
mov eax, dword ptr [rax+0x08]
sub eax, edx
jmp SHORT G_M24720_IG09
;; size=23 bbWeight=0.50 PerfScore 4.75
G_M24720_IG08:
test edx, edx
- jne G_M24720_IG34
+ jne G_M24720_IG32
xor rdi, rdi
xor eax, eax
;; size=12 bbWeight=0.50 PerfScore 0.88
G_M24720_IG09:
cmp eax, 12
- jl G_M24720_IG33
+ jl G_M24720_IG32
mov edi, dword ptr [rdi+0x08]
mov eax, edi
shr eax, 28
movzx rax, al
cmp eax, 5
jge SHORT G_M24720_IG11
;; size=25 bbWeight=1 PerfScore 5.50
G_M24720_IG10:
and edi, 0xD1FFAB1E
lea edi, [rdi+2*rdi]
lea r14d, [rdx+4*rdi]
jmp SHORT G_M24720_IG12
;; size=15 bbWeight=0.50 PerfScore 1.62
G_M24720_IG11:
lea r14d, [rdx+0x0C]
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M24720_IG12:
mov r13d, -1
mov r12, rsi
mov eax, edx
mov dword ptr [rbp-0x30], eax
;; size=14 bbWeight=1 PerfScore 1.75
G_M24720_IG13:
cmp r13d, r14d
- jge G_M24720_IG30
+ jge G_M24720_IG29
;; size=9 bbWeight=8 PerfScore 10.00
G_M24720_IG14:
test r13d, r13d
jl SHORT G_M24720_IG20
;; size=5 bbWeight=4 PerfScore 5.00
G_M24720_IG15:
cmp dword ptr [r12+0x2C], 0
- je G_M24720_IG28
+ je G_M24720_IG27
mov rsi, gword ptr [r12+0x30]
test rsi, rsi
je SHORT G_M24720_IG16
cmp dword ptr [rsi+0x08], r13d
- jb G_M24720_IG27
+ jb G_M24720_IG26
mov edi, r13d
lea rdi, bword ptr [rsi+rdi+0x10]
mov esi, dword ptr [rsi+0x08]
sub esi, r13d
jmp SHORT G_M24720_IG17
;; size=48 bbWeight=2 PerfScore 33.50
G_M24720_IG16:
test r13d, r13d
- jne G_M24720_IG27
+ jne G_M24720_IG26
xor rdi, rdi
xor esi, esi
;; size=13 bbWeight=2 PerfScore 3.50
G_M24720_IG17:
cmp esi, 12
jl G_M24720_IG26
mov esi, dword ptr [rdi+0x08]
mov edi, esi
shr edi, 28
movzx rdi, dil
cmp edi, 5
jge SHORT G_M24720_IG18
and esi, 0xD1FFAB1E
lea esi, [rsi+2*rsi]
lea esi, [r13+4*rsi+0x0C]
jmp SHORT G_M24720_IG19
;; size=42 bbWeight=2 PerfScore 20.50
G_M24720_IG18:
add r13d, 12
mov esi, r13d
;; size=7 bbWeight=2 PerfScore 1.00
G_M24720_IG19:
mov r13d, esi
jmp SHORT G_M24720_IG21
;; size=5 bbWeight=2 PerfScore 4.50
G_M24720_IG20:
lea r13d, [rax+0x0C]
mov eax, dword ptr [rbp-0x30]
;; size=7 bbWeight=2 PerfScore 3.00
G_M24720_IG21:
add r13d, 12
cmp r13d, r14d
- jge G_M24720_IG30
+ jge G_M24720_IG29
;; size=13 bbWeight=4 PerfScore 6.00
G_M24720_IG22:
test r13d, r13d
jl SHORT G_M24720_IG24
;; size=5 bbWeight=16 PerfScore 20.00
G_M24720_IG23:
mov r15, r12
mov ecx, r13d
jmp SHORT G_M24720_IG25
;; size=8 bbWeight=8 PerfScore 20.00
G_M24720_IG24:
xor r15, r15
xor ecx, ecx
;; size=5 bbWeight=8 PerfScore 4.00
G_M24720_IG25:
xor esi, esi
mov dword ptr [rbp-0x2C], esi
test r15, r15
- je G_M24720_IG29
+ je SHORT G_M24720_IG28
mov dword ptr [rbp-0x34], ecx
lea esi, [rcx-0x0C]
mov rdi, r15
mov edx, 5
mov r9, 0xD1FFAB1E ; code for System.Text.Json.JsonDocument:GetString(int,ubyte):System.String:this
call [r9]System.Text.Json.JsonDocument:GetString(int,ubyte):System.String:this
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Configuration.Json.JsonConfigurationFileParser:EnterContext(System.String):this
call [rax]Microsoft.Extensions.Configuration.Json.JsonConfigurationFileParser:EnterContext(System.String):this
mov rsi, r15
mov edx, dword ptr [rbp-0x34]
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Configuration.Json.JsonConfigurationFileParser:VisitValue(System.Text.Json.JsonElement):this
call [rax]Microsoft.Extensions.Configuration.Json.JsonConfigurationFileParser:VisitValue(System.Text.Json.JsonElement):this
mov rdi, gword ptr [rbx+0x10]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this
cmp dword ptr [rdi], edi
call [rax]System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this
mov eax, dword ptr [rbp-0x30]
mov r15d, dword ptr [rbp-0x2C]
jmp G_M24720_IG13
- ;; size=110 bbWeight=16 PerfScore 456.00
+ ;; size=106 bbWeight=16 PerfScore 456.00
G_M24720_IG26:
- mov edi, 40
- mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
- call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
- int3
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M24720_IG27:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M24720_IG28:
+G_M24720_IG27:
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowObjectDisposedException_JsonDocument()
call [rax]System.Text.Json.ThrowHelper:ThrowObjectDisposedException_JsonDocument()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M24720_IG29:
+G_M24720_IG28:
mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
call [rax]System.InvalidOperationException:.ctor():this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=42 bbWeight=0 PerfScore 0.00
-G_M24720_IG30:
+G_M24720_IG29:
mov rdi, rbx
mov esi, r15d
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Configuration.Json.JsonConfigurationFileParser:SetNullIfElementIsEmpty(ubyte):this
call [rax]Microsoft.Extensions.Configuration.Json.JsonConfigurationFileParser:SetNullIfElementIsEmpty(ubyte):this
nop
;; size=19 bbWeight=1 PerfScore 4.00
-G_M24720_IG31:
+G_M24720_IG30:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M24720_IG32:
+G_M24720_IG31:
mov esi, ecx
mov edi, 1
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowJsonElementWrongTypeException(ubyte,ubyte)
call [rax]System.Text.Json.ThrowHelper:ThrowJsonElementWrongTypeException(ubyte,ubyte)
int3
;; size=20 bbWeight=0 PerfScore 0.00
-G_M24720_IG33:
- mov edi, 40
- mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
- call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
- int3
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M24720_IG34:
+G_M24720_IG32:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M24720_IG35:
+G_M24720_IG33:
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowObjectDisposedException_JsonDocument()
call [rax]System.Text.Json.ThrowHelper:ThrowObjectDisposedException_JsonDocument()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M24720_IG36:
+G_M24720_IG34:
mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor():this
call [rax]System.InvalidOperationException:.ctor():this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=42 bbWeight=0 PerfScore 0.00
-G_M24720_IG37:
+G_M24720_IG35:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x40]
;; size=22 bbWeight=0 PerfScore 0.00
-G_M24720_IG38:
+G_M24720_IG36:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 781, prolog size 26, PerfScore 635.88, instruction count 219, allocated bytes for code 781 (MethodHash=2add9f6f) for method Microsoft.Extensions.Configuration.Json.JsonConfigurationFileParser:VisitObjectElement(System.Text.Json.JsonElement):this (FullOpts)
+; Total bytes of code 741, prolog size 26, PerfScore 635.88, instruction count 211, allocated bytes for code 741 (MethodHash=2add9f6f) for method Microsoft.Extensions.Configuration.Json.JsonConfigurationFileParser:VisitObjectElement(System.Text.Json.JsonElement):this (FullOpts) Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/63f869c7e76d7958186fb1ce43d39502 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 14 minutes.
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: