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] Fold null checks against known non-null values #751
Comments
Top method regressions168 (32.56 % of base) - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[double](System.Collections.Generic.IEnumerable`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double] ; Assembly listing for method System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[double](System.Collections.Generic.IEnumerable`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double] (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; 15 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 21 single block inlinees; 15 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 6, 4.25) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[double]>
+; V00 arg0 [V00,T02] ( 6, 4.25) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[double]>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T08] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[double]>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <System.Collections.Immutable.ImmutableHashSet`1[double]>
; V04 tmp3 [V04,T06] ( 4, 2 ) ref -> rbx class-hnd exact "Inline stloc first use temp" <System.Collections.Immutable.ImmutableHashSet`1[double]>
; V05 tmp4 [V05,T09] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[double]>
; V06 tmp5 [V06,T03] ( 4, 4 ) ref -> r15 class-hnd "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[double]>
; V07 tmp6 [V07,T00] ( 11, 11 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1[double]>
;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[double]>
;* V09 tmp8 [V09 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] "spilled call-like call argument" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]>
;* V10 tmp9 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[double]>
; V11 tmp10 [V11 ] ( 5, 2.50) struct (16) [rbp-0x38] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[double]>
;* V12 tmp11 [V12 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]>
; V13 tmp12 [V13,T11] ( 3, 1.50) int -> rdx "Inline stloc first use temp"
; V14 tmp13 [V14,T10] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[double]>
; V15 tmp14 [V15,T04] ( 4, 4 ) ref -> r15 class-hnd "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[double]>
-; V16 tmp15 [V16,T02] ( 6, 6 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1[double]>
-; V17 tmp16 [V17,T13] ( 2, 1 ) ref -> [rbp-0x38] do-not-enreg[] "field V11._root (fldOffset=0x0)" P-DEP
-; V18 tmp17 [V18,T12] ( 3, 1.50) int -> [rbp-0x30] do-not-enreg[] "field V11._count (fldOffset=0x8)" P-DEP
-; V19 tmp18 [V19,T17] ( 2, 1 ) int -> [rbp-0x2C] do-not-enreg[] "field V11._countType (fldOffset=0xc)" P-DEP
-; V20 tmp19 [V20,T14] ( 2, 1 ) ref -> rdi single-def "field V12._root (fldOffset=0x0)" P-INDEP
-; V21 tmp20 [V21,T15] ( 2, 1 ) ref -> rax single-def "field V12._equalityComparer (fldOffset=0x8)" P-INDEP
-; V22 tmp21 [V22,T16] ( 2, 1 ) ref -> rdx single-def "field V12._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
-; V23 tmp22 [V23,T18] ( 2, 1 ) int -> rcx "field V12._count (fldOffset=0x18)" P-INDEP
-; V24 cse0 [V24,T07] ( 4, 2 ) ref -> r14 "CSE #04: moderate"
-; V25 cse1 [V25,T05] ( 6, 3 ) ref -> registers multi-def "CSE #02: aggressive"
+; V16 tmp15 [V16,T01] ( 9, 9 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1[double]>
+;* V17 tmp16 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[double]>
+;* V18 tmp17 [V18 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] "spilled call-like call argument" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]>
+;* V19 tmp18 [V19 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[double]>
+; V20 tmp19 [V20 ] ( 5, 2.50) struct (16) [rbp-0x48] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[double]>
+; V21 tmp20 [V21 ] ( 2, 2 ) struct (32) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]>
+; V22 tmp21 [V22,T12] ( 3, 1.50) int -> rdx "Inline stloc first use temp"
+; V23 tmp22 [V23,T15] ( 2, 1 ) ref -> [rbp-0x38] do-not-enreg[] "field V11._root (fldOffset=0x0)" P-DEP
+; V24 tmp23 [V24,T13] ( 3, 1.50) int -> [rbp-0x30] do-not-enreg[] "field V11._count (fldOffset=0x8)" P-DEP
+; V25 tmp24 [V25,T20] ( 2, 1 ) int -> [rbp-0x2C] do-not-enreg[] "field V11._countType (fldOffset=0xc)" P-DEP
+; V26 tmp25 [V26,T16] ( 2, 1 ) ref -> rdi single-def "field V12._root (fldOffset=0x0)" P-INDEP
+; V27 tmp26 [V27,T17] ( 2, 1 ) ref -> rax single-def "field V12._equalityComparer (fldOffset=0x8)" P-INDEP
+; V28 tmp27 [V28,T18] ( 2, 1 ) ref -> rdx single-def "field V12._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
+; V29 tmp28 [V29,T21] ( 2, 1 ) int -> rcx "field V12._count (fldOffset=0x18)" P-INDEP
+; V30 tmp29 [V30,T19] ( 2, 1 ) ref -> [rbp-0x48] do-not-enreg[] "field V20._root (fldOffset=0x0)" P-DEP
+; V31 tmp30 [V31,T14] ( 3, 1.50) int -> [rbp-0x40] do-not-enreg[] "field V20._count (fldOffset=0x8)" P-DEP
+; V32 tmp31 [V32,T22] ( 2, 1 ) int -> [rbp-0x3C] do-not-enreg[] "field V20._countType (fldOffset=0xc)" P-DEP
+; V33 cse0 [V33,T07] ( 4, 2 ) ref -> r14 "CSE #04: moderate"
+; V34 cse1 [V34,T05] ( 6, 3 ) ref -> registers multi-def "CSE #02: aggressive"
;
-; Lcl frame size = 56
+; Lcl frame size = 104
G_M54777_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 56
- lea rbp, [rsp+0x60]
+ sub rsp, 104
+ lea rbp, [rsp+0x90]
xor eax, eax
- mov qword ptr [rbp-0x38], rax
+ mov qword ptr [rbp-0x68], rax
+ vxorps xmm8, xmm8, xmm8
+ vmovdqu ymmword ptr [rbp-0x60], ymm8
+ vmovdqa xmmword ptr [rbp-0x40], xmm8
+ mov qword ptr [rbp-0x30], rax
mov rbx, rdi
- ;; size=28 bbWeight=1 PerfScore 8.25
+ ;; size=50 bbWeight=1 PerfScore 13.58
G_M54777_IG02:
test rbx, rbx
je G_M54777_IG08
;; size=9 bbWeight=1 PerfScore 1.25
G_M54777_IG03:
mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.ImmutableHashSet`1[double]
cmp qword ptr [rbx], rdi
jne G_M54777_IG08
;; size=19 bbWeight=0.25 PerfScore 1.06
G_M54777_IG04:
mov rdi, 0xD1FFAB1E ; const ptr
mov r15, gword ptr [rdi]
cmp r15, gword ptr [rbx+0x08]
je G_M54777_IG06
mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.ImmutableHashSet`1[double]
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rdi, 0xD1FFAB1E ; const ptr
mov r13, gword ptr [rdi]
mov rdi, r13
mov rsi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rsi]
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]]):this
call [rax]System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]]):this
lea rdi, bword ptr [r14+0x10]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
xor edi, edi
mov dword ptr [r14+0x20], edi
lea rdi, bword ptr [r14+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[double]:GetHashBucketEqualityComparer(System.Collections.Generic.IEqualityComparer`1[double]):System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]
call [rax]System.Collections.Immutable.ImmutableHashSet`1[double]:GetHashBucketEqualityComparer(System.Collections.Generic.IEqualityComparer`1[double]):System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]
lea rdi, bword ptr [r14+0x18]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rdi, gword ptr [r14+0x10]
mov rax, gword ptr [r14+0x08]
mov ecx, dword ptr [r14+0x20]
mov rdx, gword ptr [r14+0x18]
mov gword ptr [rsp], rdi
mov gword ptr [rsp+0x08], rax
mov gword ptr [rsp+0x10], rdx
mov dword ptr [rsp+0x18], ecx
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[double]:Union(System.Collections.Generic.IEnumerable`1[double],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[double]
call [rax]System.Collections.Immutable.ImmutableHashSet`1[double]:Union(System.Collections.Generic.IEnumerable`1[double],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[double]
mov gword ptr [rbp-0x38], rax
mov qword ptr [rbp-0x30], rdx
mov edx, dword ptr [rbp-0x30]
cmp dword ptr [rbp-0x2C], 0
jne SHORT G_M54777_IG05
mov edx, dword ptr [rbp-0x30]
add edx, dword ptr [r14+0x20]
;; size=212 bbWeight=0.50 PerfScore 25.62
G_M54777_IG05:
mov rdi, r14
mov rsi, gword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[double]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]],int):System.Collections.Immutable.ImmutableHashSet`1[double]:this
call [rax]System.Collections.Immutable.ImmutableHashSet`1[double]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]],int):System.Collections.Immutable.ImmutableHashSet`1[double]:this
jmp SHORT G_M54777_IG07
;; size=21 bbWeight=0.50 PerfScore 3.25
G_M54777_IG06:
mov rax, rbx
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M54777_IG07:
- jmp G_M54777_IG11
+ jmp G_M54777_IG13
;; size=5 bbWeight=0.50 PerfScore 1.00
G_M54777_IG08:
mov rdi, 0xD1FFAB1E ; const ptr
mov r15, gword ptr [rdi]
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
cmp r15, gword ptr [r14+0x08]
- je G_M54777_IG09
+ je G_M54777_IG11
mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.ImmutableHashSet`1[double]
call CORINFO_HELP_NEWSFAST
mov r13, rax
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
mov r12, rdi
mov rdi, r12
mov rsi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rsi]
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]]):this
call [rax]System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]]):this
lea rdi, bword ptr [r13+0x10]
mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
xor edi, edi
mov dword ptr [r13+0x20], edi
lea rdi, bword ptr [r13+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[double]:GetHashBucketEqualityComparer(System.Collections.Generic.IEqualityComparer`1[double]):System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]
call [rax]System.Collections.Immutable.ImmutableHashSet`1[double]:GetHashBucketEqualityComparer(System.Collections.Generic.IEqualityComparer`1[double]):System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]
lea rdi, bword ptr [r13+0x18]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- mov rsi, r14
- mov rdi, r13
- mov edx, 1
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[double]:Union(System.Collections.Generic.IEnumerable`1[double],ubyte):System.Collections.Immutable.ImmutableHashSet`1[double]:this
- call [rax]System.Collections.Immutable.ImmutableHashSet`1[double]:Union(System.Collections.Generic.IEnumerable`1[double],ubyte):System.Collections.Immutable.ImmutableHashSet`1[double]:this
- jmp SHORT G_M54777_IG10
- ;; size=180 bbWeight=0.50 PerfScore 17.12
+ lea rdi, [rbp-0x68]
+ mov rsi, r13
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]:.ctor(System.Collections.Immutable.ImmutableHashSet`1[double]):this
+ call [rax]System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]:.ctor(System.Collections.Immutable.ImmutableHashSet`1[double]):this
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x68]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, r14
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[double]:Union(System.Collections.Generic.IEnumerable`1[double],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[double]
+ call [rax]System.Collections.Immutable.ImmutableHashSet`1[double]:Union(System.Collections.Generic.IEnumerable`1[double],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[double]
+ mov gword ptr [rbp-0x48], rax
+ mov qword ptr [rbp-0x40], rdx
+ mov rsi, r13
+ mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.Requires:NotNull[System.Collections.Immutable.ImmutableHashSet`1[double]](System.Collections.Immutable.ImmutableHashSet`1[double],System.String)
+ mov rdx, 0xD1FFAB1E ; 'priorSet'
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:NotNull[System.__Canon](System.__Canon,System.String)
+ ;; size=287 bbWeight=0.50 PerfScore 25.62
G_M54777_IG09:
+ call [rax]System.Collections.Immutable.Requires:NotNull[System.__Canon](System.__Canon,System.String)
+ mov edx, dword ptr [rbp-0x40]
+ cmp dword ptr [rbp-0x3C], 0
+ jne SHORT G_M54777_IG10
+ mov edx, dword ptr [rbp-0x40]
+ add edx, dword ptr [r13+0x20]
+ ;; size=18 bbWeight=0.50 PerfScore 5.50
+G_M54777_IG10:
+ mov rdi, r13
+ mov rsi, gword ptr [rbp-0x48]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[double]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]],int):System.Collections.Immutable.ImmutableHashSet`1[double]:this
+ call [rax]System.Collections.Immutable.ImmutableHashSet`1[double]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]],int):System.Collections.Immutable.ImmutableHashSet`1[double]:this
+ jmp SHORT G_M54777_IG12
+ ;; size=21 bbWeight=0.50 PerfScore 3.25
+G_M54777_IG11:
mov rax, r14
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M54777_IG10:
+G_M54777_IG12:
mov rdi, rax
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[double]:Union(System.Collections.Generic.IEnumerable`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double]:this
cmp dword ptr [rdi], edi
call [rax]System.Collections.Immutable.ImmutableHashSet`1[double]:Union(System.Collections.Generic.IEnumerable`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double]:this
;; size=20 bbWeight=0.50 PerfScore 3.38
-G_M54777_IG11:
+G_M54777_IG13:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M54777_IG12:
- add rsp, 56
+G_M54777_IG14:
+ add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 516, prolog size 25, PerfScore 65.69, instruction count 121, allocated bytes for code 516 (MethodHash=e49c2a06) for method System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[double](System.Collections.Generic.IEnumerable`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double] (FullOpts)
+; Total bytes of code 684, prolog size 47, PerfScore 88.27, instruction count 158, allocated bytes for code 684 (MethodHash=e49c2a06) for method System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[double](System.Collections.Generic.IEnumerable`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double] (FullOpts)
; ============================================================ 168 (32.56 % of base) - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[int](System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableHashSet`1[int] ; Assembly listing for method System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[int](System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableHashSet`1[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; 15 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 21 single block inlinees; 15 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 6, 4.25) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]>
+; V00 arg0 [V00,T02] ( 6, 4.25) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T08] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[int]>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <System.Collections.Immutable.ImmutableHashSet`1[int]>
; V04 tmp3 [V04,T06] ( 4, 2 ) ref -> rbx class-hnd exact "Inline stloc first use temp" <System.Collections.Immutable.ImmutableHashSet`1[int]>
; V05 tmp4 [V05,T09] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[int]>
; V06 tmp5 [V06,T03] ( 4, 4 ) ref -> r15 class-hnd "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[int]>
; V07 tmp6 [V07,T00] ( 11, 11 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1[int]>
;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[int]>
;* V09 tmp8 [V09 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] "spilled call-like call argument" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]>
;* V10 tmp9 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int]>
; V11 tmp10 [V11 ] ( 5, 2.50) struct (16) [rbp-0x38] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int]>
;* V12 tmp11 [V12 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]>
; V13 tmp12 [V13,T11] ( 3, 1.50) int -> rdx "Inline stloc first use temp"
; V14 tmp13 [V14,T10] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[int]>
; V15 tmp14 [V15,T04] ( 4, 4 ) ref -> r15 class-hnd "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[int]>
-; V16 tmp15 [V16,T02] ( 6, 6 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1[int]>
-; V17 tmp16 [V17,T13] ( 2, 1 ) ref -> [rbp-0x38] do-not-enreg[] "field V11._root (fldOffset=0x0)" P-DEP
-; V18 tmp17 [V18,T12] ( 3, 1.50) int -> [rbp-0x30] do-not-enreg[] "field V11._count (fldOffset=0x8)" P-DEP
-; V19 tmp18 [V19,T17] ( 2, 1 ) int -> [rbp-0x2C] do-not-enreg[] "field V11._countType (fldOffset=0xc)" P-DEP
-; V20 tmp19 [V20,T14] ( 2, 1 ) ref -> rdi single-def "field V12._root (fldOffset=0x0)" P-INDEP
-; V21 tmp20 [V21,T15] ( 2, 1 ) ref -> rax single-def "field V12._equalityComparer (fldOffset=0x8)" P-INDEP
-; V22 tmp21 [V22,T16] ( 2, 1 ) ref -> rdx single-def "field V12._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
-; V23 tmp22 [V23,T18] ( 2, 1 ) int -> rcx "field V12._count (fldOffset=0x18)" P-INDEP
-; V24 cse0 [V24,T07] ( 4, 2 ) ref -> r14 "CSE #04: moderate"
-; V25 cse1 [V25,T05] ( 6, 3 ) ref -> registers multi-def "CSE #02: aggressive"
+; V16 tmp15 [V16,T01] ( 9, 9 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1[int]>
+;* V17 tmp16 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[int]>
+;* V18 tmp17 [V18 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] "spilled call-like call argument" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]>
+;* V19 tmp18 [V19 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int]>
+; V20 tmp19 [V20 ] ( 5, 2.50) struct (16) [rbp-0x48] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int]>
+; V21 tmp20 [V21 ] ( 2, 2 ) struct (32) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]>
+; V22 tmp21 [V22,T12] ( 3, 1.50) int -> rdx "Inline stloc first use temp"
+; V23 tmp22 [V23,T15] ( 2, 1 ) ref -> [rbp-0x38] do-not-enreg[] "field V11._root (fldOffset=0x0)" P-DEP
+; V24 tmp23 [V24,T13] ( 3, 1.50) int -> [rbp-0x30] do-not-enreg[] "field V11._count (fldOffset=0x8)" P-DEP
+; V25 tmp24 [V25,T20] ( 2, 1 ) int -> [rbp-0x2C] do-not-enreg[] "field V11._countType (fldOffset=0xc)" P-DEP
+; V26 tmp25 [V26,T16] ( 2, 1 ) ref -> rdi single-def "field V12._root (fldOffset=0x0)" P-INDEP
+; V27 tmp26 [V27,T17] ( 2, 1 ) ref -> rax single-def "field V12._equalityComparer (fldOffset=0x8)" P-INDEP
+; V28 tmp27 [V28,T18] ( 2, 1 ) ref -> rdx single-def "field V12._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
+; V29 tmp28 [V29,T21] ( 2, 1 ) int -> rcx "field V12._count (fldOffset=0x18)" P-INDEP
+; V30 tmp29 [V30,T19] ( 2, 1 ) ref -> [rbp-0x48] do-not-enreg[] "field V20._root (fldOffset=0x0)" P-DEP
+; V31 tmp30 [V31,T14] ( 3, 1.50) int -> [rbp-0x40] do-not-enreg[] "field V20._count (fldOffset=0x8)" P-DEP
+; V32 tmp31 [V32,T22] ( 2, 1 ) int -> [rbp-0x3C] do-not-enreg[] "field V20._countType (fldOffset=0xc)" P-DEP
+; V33 cse0 [V33,T07] ( 4, 2 ) ref -> r14 "CSE #04: moderate"
+; V34 cse1 [V34,T05] ( 6, 3 ) ref -> registers multi-def "CSE #02: aggressive"
;
-; Lcl frame size = 56
+; Lcl frame size = 104
G_M37119_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 56
- lea rbp, [rsp+0x60]
+ sub rsp, 104
+ lea rbp, [rsp+0x90]
xor eax, eax
- mov qword ptr [rbp-0x38], rax
+ mov qword ptr [rbp-0x68], rax
+ vxorps xmm8, xmm8, xmm8
+ vmovdqu ymmword ptr [rbp-0x60], ymm8
+ vmovdqa xmmword ptr [rbp-0x40], xmm8
+ mov qword ptr [rbp-0x30], rax
mov rbx, rdi
- ;; size=28 bbWeight=1 PerfScore 8.25
+ ;; size=50 bbWeight=1 PerfScore 13.58
G_M37119_IG02:
test rbx, rbx
je G_M37119_IG08
;; size=9 bbWeight=1 PerfScore 1.25
G_M37119_IG03:
mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.ImmutableHashSet`1[int]
cmp qword ptr [rbx], rdi
jne G_M37119_IG08
;; size=19 bbWeight=0.25 PerfScore 1.06
G_M37119_IG04:
mov rdi, 0xD1FFAB1E ; const ptr
mov r15, gword ptr [rdi]
cmp r15, gword ptr [rbx+0x08]
je G_M37119_IG06
mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.ImmutableHashSet`1[int]
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rdi, 0xD1FFAB1E ; const ptr
mov r13, gword ptr [rdi]
mov rdi, r13
mov rsi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rsi]
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]]):this
call [rax]System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]]):this
lea rdi, bword ptr [r14+0x10]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
xor edi, edi
mov dword ptr [r14+0x20], edi
lea rdi, bword ptr [r14+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[int]:GetHashBucketEqualityComparer(System.Collections.Generic.IEqualityComparer`1[int]):System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]
call [rax]System.Collections.Immutable.ImmutableHashSet`1[int]:GetHashBucketEqualityComparer(System.Collections.Generic.IEqualityComparer`1[int]):System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]
lea rdi, bword ptr [r14+0x18]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rdi, gword ptr [r14+0x10]
mov rax, gword ptr [r14+0x08]
mov ecx, dword ptr [r14+0x20]
mov rdx, gword ptr [r14+0x18]
mov gword ptr [rsp], rdi
mov gword ptr [rsp+0x08], rax
mov gword ptr [rsp+0x10], rdx
mov dword ptr [rsp+0x18], ecx
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[int]:Union(System.Collections.Generic.IEnumerable`1[int],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int]
call [rax]System.Collections.Immutable.ImmutableHashSet`1[int]:Union(System.Collections.Generic.IEnumerable`1[int],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int]
mov gword ptr [rbp-0x38], rax
mov qword ptr [rbp-0x30], rdx
mov edx, dword ptr [rbp-0x30]
cmp dword ptr [rbp-0x2C], 0
jne SHORT G_M37119_IG05
mov edx, dword ptr [rbp-0x30]
add edx, dword ptr [r14+0x20]
;; size=212 bbWeight=0.50 PerfScore 25.62
G_M37119_IG05:
mov rdi, r14
mov rsi, gword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[int]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]],int):System.Collections.Immutable.ImmutableHashSet`1[int]:this
call [rax]System.Collections.Immutable.ImmutableHashSet`1[int]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]],int):System.Collections.Immutable.ImmutableHashSet`1[int]:this
jmp SHORT G_M37119_IG07
;; size=21 bbWeight=0.50 PerfScore 3.25
G_M37119_IG06:
mov rax, rbx
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M37119_IG07:
- jmp G_M37119_IG11
+ jmp G_M37119_IG13
;; size=5 bbWeight=0.50 PerfScore 1.00
G_M37119_IG08:
mov rdi, 0xD1FFAB1E ; const ptr
mov r15, gword ptr [rdi]
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
cmp r15, gword ptr [r14+0x08]
- je G_M37119_IG09
+ je G_M37119_IG11
mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.ImmutableHashSet`1[int]
call CORINFO_HELP_NEWSFAST
mov r13, rax
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
mov r12, rdi
mov rdi, r12
mov rsi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rsi]
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]]):this
call [rax]System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]]):this
lea rdi, bword ptr [r13+0x10]
mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
xor edi, edi
mov dword ptr [r13+0x20], edi
lea rdi, bword ptr [r13+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[int]:GetHashBucketEqualityComparer(System.Collections.Generic.IEqualityComparer`1[int]):System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]
call [rax]System.Collections.Immutable.ImmutableHashSet`1[int]:GetHashBucketEqualityComparer(System.Collections.Generic.IEqualityComparer`1[int]):System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]
lea rdi, bword ptr [r13+0x18]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- mov rsi, r14
- mov rdi, r13
- mov edx, 1
- mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[int]:Union(System.Collections.Generic.IEnumerable`1[int],ubyte):System.Collections.Immutable.ImmutableHashSet`1[int]:this
- call [rax]System.Collections.Immutable.ImmutableHashSet`1[int]:Union(System.Collections.Generic.IEnumerable`1[int],ubyte):System.Collections.Immutable.ImmutableHashSet`1[int]:this
- jmp SHORT G_M37119_IG10
- ;; size=180 bbWeight=0.50 PerfScore 17.12
+ lea rdi, [rbp-0x68]
+ mov rsi, r13
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]:.ctor(System.Collections.Immutable.ImmutableHashSet`1[int]):this
+ call [rax]System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]:.ctor(System.Collections.Immutable.ImmutableHashSet`1[int]):this
+ lea rdi, [rsp]
+ lea rsi, [rbp-0x68]
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x08], rcx
+ add rsi, 8
+ add rdi, 8
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp+0x10], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ mov rdi, r14
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[int]:Union(System.Collections.Generic.IEnumerable`1[int],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int]
+ call [rax]System.Collections.Immutable.ImmutableHashSet`1[int]:Union(System.Collections.Generic.IEnumerable`1[int],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int]
+ mov gword ptr [rbp-0x48], rax
+ mov qword ptr [rbp-0x40], rdx
+ mov rsi, r13
+ mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.Requires:NotNull[System.Collections.Immutable.ImmutableHashSet`1[int]](System.Collections.Immutable.ImmutableHashSet`1[int],System.String)
+ mov rdx, 0xD1FFAB1E ; 'priorSet'
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.Requires:NotNull[System.__Canon](System.__Canon,System.String)
+ ;; size=287 bbWeight=0.50 PerfScore 25.62
G_M37119_IG09:
+ call [rax]System.Collections.Immutable.Requires:NotNull[System.__Canon](System.__Canon,System.String)
+ mov edx, dword ptr [rbp-0x40]
+ cmp dword ptr [rbp-0x3C], 0
+ jne SHORT G_M37119_IG10
+ mov edx, dword ptr [rbp-0x40]
+ add edx, dword ptr [r13+0x20]
+ ;; size=18 bbWeight=0.50 PerfScore 5.50
+G_M37119_IG10:
+ mov rdi, r13
+ mov rsi, gword ptr [rbp-0x48]
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[int]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]],int):System.Collections.Immutable.ImmutableHashSet`1[int]:this
+ call [rax]System.Collections.Immutable.ImmutableHashSet`1[int]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]],int):System.Collections.Immutable.ImmutableHashSet`1[int]:this
+ jmp SHORT G_M37119_IG12
+ ;; size=21 bbWeight=0.50 PerfScore 3.25
+G_M37119_IG11:
mov rax, r14
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M37119_IG10:
+G_M37119_IG12:
mov rdi, rax
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Collections.Immutable.ImmutableHashSet`1[int]:Union(System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableHashSet`1[int]:this
cmp dword ptr [rdi], edi
call [rax]System.Collections.Immutable.ImmutableHashSet`1[int]:Union(System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableHashSet`1[int]:this
;; size=20 bbWeight=0.50 PerfScore 3.38
-G_M37119_IG11:
+G_M37119_IG13:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M37119_IG12:
- add rsp, 56
+G_M37119_IG14:
+ add rsp, 104
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 516, prolog size 25, PerfScore 65.69, instruction count 121, allocated bytes for code 516 (MethodHash=1b9d6f00) for method System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[int](System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableHashSet`1[int] (FullOpts)
+; Total bytes of code 684, prolog size 47, PerfScore 88.27, instruction count 158, allocated bytes for code 684 (MethodHash=1b9d6f00) for method System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[int](System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableHashSet`1[int] (FullOpts)
; ============================================================ 3 (5.08 % of base) - System.IO.Packaging.ContentType:IsLinearWhiteSpaceChar(ushort):ubyte ; Assembly listing for method System.IO.Packaging.ContentType:IsLinearWhiteSpaceChar(ushort):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; rsp 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,T00] ( 3, 3 ) ushort -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 cse0 [V02,T02] ( 2, 1 ) ref -> rdi "CSE #01: moderate"
; V03 cse1 [V03,T01] ( 3, 2.50) int -> rsi "CSE #02: aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M64796_IG01:
- push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M64796_IG02:
movzx rsi, di
cmp esi, 32
jle SHORT G_M64796_IG05
;; size=8 bbWeight=1 PerfScore 1.50
G_M64796_IG03:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M64796_IG04:
- pop rbp
+ add rsp, 8
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
G_M64796_IG05:
mov rcx, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rcx]
mov ecx, 4
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Array:IndexOf[ushort](ushort[],ushort,int,int):int
call [rax]System.Array:IndexOf[ushort](ushort[],ushort,int,int):int
cmp eax, -1
setne al
movzx rax, al
;; size=41 bbWeight=0.50 PerfScore 3.75
G_M64796_IG06:
- pop rbp
+ add rsp, 8
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
-; Total bytes of code 59, prolog size 4, PerfScore 8.12, instruction count 19, allocated bytes for code 59 (MethodHash=e95702e3) for method System.IO.Packaging.ContentType:IsLinearWhiteSpaceChar(ushort):ubyte (FullOpts)
+; Total bytes of code 62, prolog size 1, PerfScore 7.62, instruction count 18, allocated bytes for code 62 (MethodHash=e95702e3) for method System.IO.Packaging.ContentType:IsLinearWhiteSpaceChar(ushort):ubyte (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/d6b646ee385e26ce3db5dcaff389eabc |
Top method improvements-57 (-22.18 % of base) - System.Net.Http.RedirectHandler:RequestRequiresForceGet(int,System.Net.Http.HttpMethod):ubyte ; Assembly listing for method System.Net.Http.RedirectHandler:RequestRequiresForceGet(int,System.Net.Http.HttpMethod):ubyte (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; 5 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 4, 3.50) int -> rdi single-def
; V01 arg1 [V01,T00] ( 7, 4.50) ref -> rbx class-hnd single-def <System.Net.Http.HttpMethod>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V05 tmp3 [V05,T04] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
-; V06 tmp4 [V06,T05] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V05 tmp3 [V05,T03] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+;* V06 tmp4 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V07 tmp5 [V07,T02] ( 3, 1.50) ubyte -> r15 "Inline return value spill temp"
-; V08 tmp6 [V08,T06] ( 2, 1 ) ubyte -> r15 "Inline return value spill temp"
+;* V08 tmp6 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;
; Lcl frame size = 0
G_M44026_IG01:
push rbp
push r15
push rbx
lea rbp, [rsp+0x10]
mov rbx, rsi
;; size=12 bbWeight=1 PerfScore 3.75
G_M44026_IG02:
lea eax, [rdi-0x12C]
cmp eax, 2
ja SHORT G_M44026_IG07
;; size=11 bbWeight=1 PerfScore 1.75
G_M44026_IG03:
test rbx, rbx
jne SHORT G_M44026_IG05
- mov rax, 0xD1FFAB1E ; const ptr
- cmp gword ptr [rax], 0
- sete al
- movzx rax, al
- ;; size=25 bbWeight=0.50 PerfScore 2.88
+ xor eax, eax
+ ;; size=7 bbWeight=0.50 PerfScore 0.75
G_M44026_IG04:
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
G_M44026_IG05:
mov rsi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rsi]
mov rsi, gword ptr [rsi+0x08]
mov rdi, gword ptr [rbx+0x08]
mov edx, 5
mov rax, 0xD1FFAB1E ; code for System.String:Equals(System.String,System.String,int):ubyte
;; size=36 bbWeight=0.50 PerfScore 3.38
G_M44026_IG06:
pop rbx
pop r15
pop rbp
tail.jmp [rax]System.String:Equals(System.String,System.String,int):ubyte
;; size=7 bbWeight=0.50 PerfScore 1.75
G_M44026_IG07:
cmp edi, 303
- jne G_M44026_IG11
+ jne SHORT G_M44026_IG11
test rbx, rbx
jne SHORT G_M44026_IG08
- mov rsi, 0xD1FFAB1E ; const ptr
- cmp gword ptr [rsi], 0
- je SHORT G_M44026_IG11
- mov rsi, 0xD1FFAB1E ; const ptr
- cmp gword ptr [rsi], 0
- sete r15b
- movzx r15, r15b
+ xor r15d, r15d
jmp SHORT G_M44026_IG09
- ;; size=57 bbWeight=0.50 PerfScore 6.62
+ ;; size=18 bbWeight=0.50 PerfScore 2.38
G_M44026_IG08:
mov rsi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rsi]
mov rsi, gword ptr [rsi+0x08]
mov rdi, gword ptr [rbx+0x08]
mov edx, 5
mov rax, 0xD1FFAB1E ; code for System.String:Equals(System.String,System.String,int):ubyte
call [rax]System.String:Equals(System.String,System.String,int):ubyte
test eax, eax
jne SHORT G_M44026_IG11
mov rsi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rsi]
mov rsi, gword ptr [rsi+0x08]
mov rdi, gword ptr [rbx+0x08]
mov edx, 5
mov rax, 0xD1FFAB1E ; code for System.String:Equals(System.String,System.String,int):ubyte
call [rax]System.String:Equals(System.String,System.String,int):ubyte
mov r15d, eax
;; size=83 bbWeight=0.50 PerfScore 10.50
G_M44026_IG09:
test r15d, r15d
sete al
movzx rax, al
;; size=9 bbWeight=0.50 PerfScore 0.75
G_M44026_IG10:
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
G_M44026_IG11:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M44026_IG12:
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 257, prolog size 12, PerfScore 35.25, instruction count 69, allocated bytes for code 257 (MethodHash=43e05405) for method System.Net.Http.RedirectHandler:RequestRequiresForceGet(int,System.Net.Http.HttpMethod):ubyte (FullOpts)
+; Total bytes of code 200, prolog size 12, PerfScore 28.88, instruction count 60, allocated bytes for code 200 (MethodHash=43e05405) for method System.Net.Http.RedirectHandler:RequestRequiresForceGet(int,System.Net.Http.HttpMethod):ubyte (FullOpts)
; ============================================================ -47 (-4.00 % of base) - System.Text.Json.Utf8JsonWriter:WritePropertyName(double):this ; Assembly listing for method System.Text.Json.Utf8JsonWriter:WritePropertyName(double):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; 52 single block inlinees; 23 inlinees without PGO data
+; 0 inlinees with PGO data; 53 single block inlinees; 23 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T05] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Text.Json.Utf8JsonWriter>
-; V01 arg1 [V01,T56] ( 4, 4 ) double -> [rbp-0x60] single-def
+; V01 arg1 [V01,T60] ( 4, 4 ) double -> [rbp-0x60] single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
; V03 loc1 [V03 ] ( 4, 2.50) int -> [rbp-0x68] do-not-enreg[X] addr-exposed ld-addr-op ptr
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
; V08 tmp4 [V08,T12] ( 2, 4 ) long -> r15 "Inlining Arg"
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inlining Arg" <System.Span`1[ubyte]>
;* V10 tmp6 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Buffers.StandardFormat>
;* V11 tmp7 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Buffers.StandardFormat>
;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ushort]>
; V13 tmp9 [V13 ] ( 4, 7 ) struct ( 8) [rbp-0x70] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Buffers.StandardFormat>
;* V14 tmp10 [V14 ] ( 0, 0 ) double -> zero-ref ld-addr-op "Inlining Arg"
;* V15 tmp11 [V15 ] ( 0, 0 ) double -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) byref -> zero-ref
;* V17 tmp13 [V17 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
; V18 tmp14 [V18 ] ( 1, 0.50) struct ( 8) [rbp-0x38] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.Span`1[ushort]>
;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ushort]>
;* V22 tmp18 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V23 tmp19 [V23 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V24 tmp20 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V26 tmp22 [V26 ] ( 0, 0 ) double -> zero-ref "impAppendStmt"
-; V27 tmp23 [V27,T22] ( 2, 2 ) ref -> rcx class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
+; V27 tmp23 [V27,T22] ( 2, 2 ) ref -> rcx class-hnd single-def "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
;* V28 tmp24 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V29 tmp25 [V29 ] ( 1, 1 ) struct (32) [rbp-0x58] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V30 tmp26 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V31 tmp27 [V31 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.Span`1[ubyte]>
; V32 tmp28 [V32 ] ( 11, 8.50) struct (32) [rbp-0x90] do-not-enreg[XSF] must-init addr-exposed ld-addr-op ptr "Inline ldloca(s) first use temp" <System.Collections.Generic.ValueListBuilder`1[ubyte]>
; V33 tmp29 [V33,T14] ( 4, 3 ) ref -> rax class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V34 tmp30 [V34 ] ( 0, 0 ) int -> zero-ref
;* V35 tmp31 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V36 tmp32 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
; V37 tmp33 [V37,T09] ( 4, 4 ) int -> rdx "Inlining Arg"
;* V38 tmp34 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V39 tmp35 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V40 tmp36 [V40,T54] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V40 tmp36 [V40,T58] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V41 tmp37 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V42 tmp38 [V42 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V43 tmp39 [V43 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V44 tmp40 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V45 tmp41 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V46 tmp42 [V46,T23] ( 2, 2 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <System.Text.UTF8Encoding+UTF8EncodingSealed>
;* V47 tmp43 [V47 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V48 tmp44 [V48 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V49 tmp45 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V50 tmp46 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V51 tmp47 [V51,T24] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
-; V52 tmp48 [V52,T31] ( 2, 2 ) int -> rdx "Inlining Arg"
+; V52 tmp48 [V52,T32] ( 2, 2 ) int -> rdx "Inlining Arg"
; V53 tmp49 [V53,T17] ( 3, 2.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" <ubyte[]>
; V54 tmp50 [V54,T04] ( 4, 6 ) int -> rdi "Inlining Arg"
;* V55 tmp51 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V56 tmp52 [V56 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V57 tmp53 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V58 tmp54 [V58 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V59 tmp55 [V59 ] ( 0, 0 ) byref -> zero-ref single-def ptr "Inlining Arg"
;* V60 tmp56 [V60 ] ( 0, 0 ) int -> zero-ref ptr "Inlining Arg"
;* V61 tmp57 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V62 tmp58 [V62 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V63 tmp59 [V63 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V64 tmp60 [V64 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V65 tmp61 [V65,T20] ( 4, 2 ) int -> r15 "Inline stloc first use temp"
; V66 tmp62 [V66 ] ( 5, 5 ) struct (16) [rbp-0xA0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-; V67 tmp63 [V67,T34] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
+; V67 tmp63 [V67,T36] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
;* V68 tmp64 [V68 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V69 tmp65 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
;* V70 tmp66 [V70 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
; V71 tmp67 [V71,T01] ( 20, 10 ) int -> r14 "Inline stloc first use temp"
;* V72 tmp68 [V72 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V73 tmp69 [V73 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V74 tmp70 [V74 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
; V75 tmp71 [V75,T03] ( 14, 7 ) byref -> r13 "Inline stloc first use temp"
; V76 tmp72 [V76,T02] ( 16, 8 ) int -> r12 "Inline stloc first use temp"
; V77 tmp73 [V77,T08] ( 4, 4 ) byref -> r14 single-def "Inlining Arg"
; V78 tmp74 [V78,T13] ( 7, 3.50) ref -> rdi class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V79 tmp75 [V79 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V80 tmp76 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Buffers.MemoryManager`1[ubyte]>
;* V81 tmp77 [V81 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]>
;* V82 tmp78 [V82 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
-; V83 tmp79 [V83,T35] ( 3, 1.50) long -> rdi "Inline stloc first use temp"
-; V84 tmp80 [V84,T36] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
+; V83 tmp79 [V83,T37] ( 3, 1.50) long -> rdi "Inline stloc first use temp"
+; V84 tmp80 [V84,T38] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
;* V85 tmp81 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def ptr "updating class info" <ubyte[]>
;* V86 tmp82 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
; V87 tmp83 [V87,T25] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
;* V88 tmp84 [V88 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V89 tmp85 [V89 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V90 tmp86 [V90 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
; V91 tmp87 [V91,T06] ( 8, 4 ) int -> rdi "Inline stloc first use temp"
;* V92 tmp88 [V92 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V93 tmp89 [V93 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V94 tmp90 [V94,T10] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V95 tmp91 [V95 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V96 tmp92 [V96,T26] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
-; V97 tmp93 [V97,T32] ( 2, 2 ) int -> rcx "Inlining Arg"
+; V97 tmp93 [V97,T33] ( 2, 2 ) int -> rcx "Inlining Arg"
;* V98 tmp94 [V98 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V99 tmp95 [V99 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V100 tmp96 [V100,T11] ( 4, 4 ) int -> rdx "Inlining Arg"
-; V101 tmp97 [V101 ] ( 4, 4 ) struct (16) [rbp-0xB0] do-not-enreg[XSA] multireg-arg must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-;* V102 tmp98 [V102 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V103 tmp99 [V103 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V100 tmp96 [V100,T11] ( 4, 4 ) int -> rsi "Inlining Arg"
+;* V101 tmp97 [V101 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+; V102 tmp98 [V102,T27] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
+; V103 tmp99 [V103,T34] ( 2, 2 ) int -> rdi "Inlining Arg"
;* V104 tmp100 [V104 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V105 tmp101 [V105 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V106 tmp102 [V106,T07] ( 4, 3 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V107 tmp103 [V107,T50] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
-; V108 tmp104 [V108,T27] ( 2, 2 ) byref -> r15 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V109 tmp105 [V109,T51] ( 0, 0 ) int -> zero-ref ptr "field V05._length (fldOffset=0x8)" P-INDEP
-;* V110 tmp106 [V110 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V111 tmp107 [V111 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-;* V112 tmp108 [V112 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V113 tmp109 [V113 ] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
-;* V114 tmp110 [V114,T49] ( 0, 0 ) byref -> zero-ref single-def ptr "field V09._reference (fldOffset=0x0)" P-INDEP
-;* V115 tmp111 [V115,T52] ( 0, 0 ) int -> zero-ref ptr "field V09._length (fldOffset=0x8)" P-INDEP
-;* V116 tmp112 [V116 ] ( 0, 0 ) ubyte -> zero-ref "field V10._format (fldOffset=0x0)" P-INDEP
-;* V117 tmp113 [V117 ] ( 0, 0 ) ubyte -> zero-ref "field V10._precision (fldOffset=0x1)" P-INDEP
-;* V118 tmp114 [V118 ] ( 0, 0 ) ubyte -> zero-ref "field V11._format (fldOffset=0x0)" P-INDEP
-;* V119 tmp115 [V119 ] ( 0, 0 ) ubyte -> zero-ref "field V11._precision (fldOffset=0x1)" P-INDEP
-; V120 tmp116 [V120,T18] ( 3, 2.50) byref -> r14 single-def "field V12._reference (fldOffset=0x0)" P-INDEP
-; V121 tmp117 [V121,T19] ( 3, 2.50) int -> r13 "field V12._length (fldOffset=0x8)" P-INDEP
-; V122 tmp118 [V122 ] ( 3, 4 ) ubyte -> [rbp-0x70] do-not-enreg[X] addr-exposed "field V13._format (fldOffset=0x0)" P-DEP
-; V123 tmp119 [V123 ] ( 3, 4 ) ubyte -> [rbp-0x6F] do-not-enreg[X] addr-exposed "field V13._precision (fldOffset=0x1)" P-DEP
-;* V124 tmp120 [V124 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
-;* V125 tmp121 [V125 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-; V126 tmp122 [V126,T39] ( 2, 1 ) byref -> rsi single-def "field V19._reference (fldOffset=0x0)" P-INDEP
-;* V127 tmp123 [V127,T55] ( 0, 0 ) int -> zero-ref ptr "field V19._length (fldOffset=0x8)" P-INDEP
-;* V128 tmp124 [V128 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
-;* V129 tmp125 [V129 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-;* V130 tmp126 [V130 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-DEP
-;* V131 tmp127 [V131 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-DEP
-;* V132 tmp128 [V132 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
-;* V133 tmp129 [V133 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
-; V134 tmp130 [V134,T28] ( 2, 2 ) byref -> r14 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
-; V135 tmp131 [V135,T33] ( 2, 2 ) int -> r13 "field V23._length (fldOffset=0x8)" P-INDEP
-; V136 tmp132 [V136,T29] ( 2, 2 ) byref -> rsi single-def "field V30._reference (fldOffset=0x0)" P-INDEP
-;* V137 tmp133 [V137,T53] ( 0, 0 ) int -> zero-ref ptr "field V30._length (fldOffset=0x8)" P-INDEP
-;* V138 tmp134 [V138 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
-;* V139 tmp135 [V139 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
-;* V140 tmp136 [V140 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V36._reference (fldOffset=0x0)" P-INDEP
-;* V141 tmp137 [V141 ] ( 0, 0 ) int -> zero-ref ptr "field V36._length (fldOffset=0x8)" P-INDEP
-; V142 tmp138 [V142,T40] ( 2, 1 ) byref -> rsi single-def "field V38._reference (fldOffset=0x0)" P-INDEP
-;* V143 tmp139 [V143 ] ( 0, 0 ) int -> zero-ref ptr "field V38._length (fldOffset=0x8)" P-INDEP
-;* V144 tmp140 [V144 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V41._reference (fldOffset=0x0)" P-INDEP
-;* V145 tmp141 [V145 ] ( 0, 0 ) int -> zero-ref ptr "field V41._length (fldOffset=0x8)" P-INDEP
-;* V146 tmp142 [V146 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP
-;* V147 tmp143 [V147 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
-; V148 tmp144 [V148,T41] ( 2, 1 ) byref -> rsi single-def "field V48._reference (fldOffset=0x0)" P-INDEP
-; V149 tmp145 [V149,T45] ( 2, 1 ) int -> rdx "field V48._length (fldOffset=0x8)" P-INDEP
-; V150 tmp146 [V150,T42] ( 2, 1 ) byref -> rsi single-def "field V49._reference (fldOffset=0x0)" P-INDEP
-; V151 tmp147 [V151,T46] ( 2, 1 ) int -> rdx "field V49._length (fldOffset=0x8)" P-INDEP
-;* V152 tmp148 [V152 ] ( 0, 0 ) byref -> zero-ref "field V50._reference (fldOffset=0x0)" P-INDEP
-;* V153 tmp149 [V153 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP
-;* V154 tmp150 [V154 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V55._reference (fldOffset=0x0)" P-INDEP
-;* V155 tmp151 [V155 ] ( 0, 0 ) int -> zero-ref ptr "field V55._length (fldOffset=0x8)" P-INDEP
-;* V156 tmp152 [V156 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V57._reference (fldOffset=0x0)" P-INDEP
-;* V157 tmp153 [V157 ] ( 0, 0 ) int -> zero-ref ptr "field V57._length (fldOffset=0x8)" P-INDEP
-; V158 tmp154 [V158,T21] ( 3, 2 ) byref -> rsi single-def "field V58._reference (fldOffset=0x0)" P-INDEP
-; V159 tmp155 [V159,T15] ( 4, 3 ) int -> rdx "field V58._length (fldOffset=0x8)" P-INDEP
-;* V160 tmp156 [V160 ] ( 0, 0 ) byref -> zero-ref "field V61._reference (fldOffset=0x0)" P-INDEP
-;* V161 tmp157 [V161 ] ( 0, 0 ) int -> zero-ref ptr "field V61._length (fldOffset=0x8)" P-INDEP
-; V162 tmp158 [V162 ] ( 2, 1.50) byref -> [rbp-0xA0] do-not-enreg[X] addr-exposed ptr "field V66._reference (fldOffset=0x0)" P-DEP
-; V163 tmp159 [V163 ] ( 4, 2.50) int -> [rbp-0x98] do-not-enreg[X] addr-exposed ptr "field V66._length (fldOffset=0x8)" P-DEP
-;* V164 tmp160 [V164 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V69._reference (fldOffset=0x0)" P-INDEP
-;* V165 tmp161 [V165 ] ( 0, 0 ) int -> zero-ref ptr "field V69._length (fldOffset=0x8)" P-INDEP
-;* V166 tmp162 [V166 ] ( 0, 0 ) byref -> zero-ref "field V70._reference (fldOffset=0x0)" P-INDEP
-;* V167 tmp163 [V167 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0x8)" P-INDEP
-;* V168 tmp164 [V168 ] ( 0, 0 ) byref -> zero-ref "field V72._reference (fldOffset=0x0)" P-INDEP
-;* V169 tmp165 [V169 ] ( 0, 0 ) int -> zero-ref "field V72._length (fldOffset=0x8)" P-INDEP
-;* V170 tmp166 [V170 ] ( 0, 0 ) byref -> zero-ref "field V74._reference (fldOffset=0x0)" P-INDEP
-;* V171 tmp167 [V171 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
-;* V172 tmp168 [V172 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V79._reference (fldOffset=0x0)" P-INDEP
-;* V173 tmp169 [V173 ] ( 0, 0 ) int -> zero-ref ptr "field V79._length (fldOffset=0x8)" P-INDEP
-;* V174 tmp170 [V174 ] ( 0, 0 ) byref -> zero-ref "field V81._reference (fldOffset=0x0)" P-DEP
-;* V175 tmp171 [V175 ] ( 0, 0 ) int -> zero-ref "field V81._length (fldOffset=0x8)" P-DEP
-; V176 tmp172 [V176,T43] ( 2, 1 ) byref -> r13 "field V82._reference (fldOffset=0x0)" P-INDEP
-; V177 tmp173 [V177,T47] ( 2, 1 ) int -> r12 "field V82._length (fldOffset=0x8)" P-INDEP
-;* V178 tmp174 [V178 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V88._reference (fldOffset=0x0)" P-INDEP
-;* V179 tmp175 [V179 ] ( 0, 0 ) int -> zero-ref "field V88._length (fldOffset=0x8)" P-INDEP
-;* V180 tmp176 [V180 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V90._reference (fldOffset=0x0)" P-INDEP
-;* V181 tmp177 [V181 ] ( 0, 0 ) int -> zero-ref ptr "field V90._length (fldOffset=0x8)" P-INDEP
-; V182 tmp178 [V182,T44] ( 2, 1 ) byref -> rdi single-def "field V95._reference (fldOffset=0x0)" P-INDEP
-; V183 tmp179 [V183,T48] ( 2, 1 ) int -> rsi "field V95._length (fldOffset=0x8)" P-INDEP
-; V184 tmp180 [V184 ] ( 3, 2.50) byref -> [rbp-0xB0] do-not-enreg[X] addr-exposed ptr "field V101._reference (fldOffset=0x0)" P-DEP
-; V185 tmp181 [V185 ] ( 3, 2.50) int -> [rbp-0xA8] do-not-enreg[X] addr-exposed ptr "field V101._length (fldOffset=0x8)" P-DEP
-; V186 tmp182 [V186,T30] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V187 GsCookie [V187 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V188 tmp184 [V188,T00] ( 39, 21 ) ref -> rbx single-def "shadowVar"
-; V189 cse0 [V189,T37] ( 3, 1.50) int -> r14 "CSE #04: conservative"
-; V190 cse1 [V190,T38] ( 3, 1.50) int -> r14 "CSE #05: conservative"
-; V191 cse2 [V191,T16] ( 3, 3 ) int -> rdi "CSE #02: moderate"
+;* V106 tmp102 [V106 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V107 tmp103 [V107 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V108 tmp104 [V108,T07] ( 4, 3 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V109 tmp105 [V109,T54] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
+; V110 tmp106 [V110,T28] ( 2, 2 ) byref -> r15 single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V111 tmp107 [V111,T55] ( 0, 0 ) int -> zero-ref ptr "field V05._length (fldOffset=0x8)" P-INDEP
+;* V112 tmp108 [V112 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V113 tmp109 [V113 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
+;* V114 tmp110 [V114 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V115 tmp111 [V115 ] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
+;* V116 tmp112 [V116,T53] ( 0, 0 ) byref -> zero-ref single-def ptr "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V117 tmp113 [V117,T56] ( 0, 0 ) int -> zero-ref ptr "field V09._length (fldOffset=0x8)" P-INDEP
+;* V118 tmp114 [V118 ] ( 0, 0 ) ubyte -> zero-ref "field V10._format (fldOffset=0x0)" P-INDEP
+;* V119 tmp115 [V119 ] ( 0, 0 ) ubyte -> zero-ref "field V10._precision (fldOffset=0x1)" P-INDEP
+;* V120 tmp116 [V120 ] ( 0, 0 ) ubyte -> zero-ref "field V11._format (fldOffset=0x0)" P-INDEP
+;* V121 tmp117 [V121 ] ( 0, 0 ) ubyte -> zero-ref "field V11._precision (fldOffset=0x1)" P-INDEP
+; V122 tmp118 [V122,T18] ( 3, 2.50) byref -> r14 single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+; V123 tmp119 [V123,T19] ( 3, 2.50) int -> r13 "field V12._length (fldOffset=0x8)" P-INDEP
+; V124 tmp120 [V124 ] ( 3, 4 ) ubyte -> [rbp-0x70] do-not-enreg[X] addr-exposed "field V13._format (fldOffset=0x0)" P-DEP
+; V125 tmp121 [V125 ] ( 3, 4 ) ubyte -> [rbp-0x6F] do-not-enreg[X] addr-exposed "field V13._precision (fldOffset=0x1)" P-DEP
+;* V126 tmp122 [V126 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
+;* V127 tmp123 [V127 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
+; V128 tmp124 [V128,T41] ( 2, 1 ) byref -> rsi single-def "field V19._reference (fldOffset=0x0)" P-INDEP
+;* V129 tmp125 [V129,T59] ( 0, 0 ) int -> zero-ref ptr "field V19._length (fldOffset=0x8)" P-INDEP
+;* V130 tmp126 [V130 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
+;* V131 tmp127 [V131 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
+;* V132 tmp128 [V132 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-DEP
+;* V133 tmp129 [V133 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-DEP
+;* V134 tmp130 [V134 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
+;* V135 tmp131 [V135 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
+; V136 tmp132 [V136,T29] ( 2, 2 ) byref -> r14 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
+; V137 tmp133 [V137,T35] ( 2, 2 ) int -> r13 "field V23._length (fldOffset=0x8)" P-INDEP
+; V138 tmp134 [V138,T30] ( 2, 2 ) byref -> rsi single-def "field V30._reference (fldOffset=0x0)" P-INDEP
+;* V139 tmp135 [V139,T57] ( 0, 0 ) int -> zero-ref ptr "field V30._length (fldOffset=0x8)" P-INDEP
+;* V140 tmp136 [V140 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
+;* V141 tmp137 [V141 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
+;* V142 tmp138 [V142 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V36._reference (fldOffset=0x0)" P-INDEP
+;* V143 tmp139 [V143 ] ( 0, 0 ) int -> zero-ref ptr "field V36._length (fldOffset=0x8)" P-INDEP
+; V144 tmp140 [V144,T42] ( 2, 1 ) byref -> rsi single-def "field V38._reference (fldOffset=0x0)" P-INDEP
+;* V145 tmp141 [V145 ] ( 0, 0 ) int -> zero-ref ptr "field V38._length (fldOffset=0x8)" P-INDEP
+;* V146 tmp142 [V146 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V41._reference (fldOffset=0x0)" P-INDEP
+;* V147 tmp143 [V147 ] ( 0, 0 ) int -> zero-ref ptr "field V41._length (fldOffset=0x8)" P-INDEP
+;* V148 tmp144 [V148 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP
+;* V149 tmp145 [V149 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
+; V150 tmp146 [V150,T43] ( 2, 1 ) byref -> rsi single-def "field V48._reference (fldOffset=0x0)" P-INDEP
+; V151 tmp147 [V151,T48] ( 2, 1 ) int -> rdx "field V48._length (fldOffset=0x8)" P-INDEP
+; V152 tmp148 [V152,T44] ( 2, 1 ) byref -> rsi single-def "field V49._reference (fldOffset=0x0)" P-INDEP
+; V153 tmp149 [V153,T49] ( 2, 1 ) int -> rdx "field V49._length (fldOffset=0x8)" P-INDEP
+;* V154 tmp150 [V154 ] ( 0, 0 ) byref -> zero-ref "field V50._reference (fldOffset=0x0)" P-INDEP
+;* V155 tmp151 [V155 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP
+;* V156 tmp152 [V156 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V55._reference (fldOffset=0x0)" P-INDEP
+;* V157 tmp153 [V157 ] ( 0, 0 ) int -> zero-ref ptr "field V55._length (fldOffset=0x8)" P-INDEP
+;* V158 tmp154 [V158 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V57._reference (fldOffset=0x0)" P-INDEP
+;* V159 tmp155 [V159 ] ( 0, 0 ) int -> zero-ref ptr "field V57._length (fldOffset=0x8)" P-INDEP
+; V160 tmp156 [V160,T21] ( 3, 2 ) byref -> rsi single-def "field V58._reference (fldOffset=0x0)" P-INDEP
+; V161 tmp157 [V161,T15] ( 4, 3 ) int -> rdx "field V58._length (fldOffset=0x8)" P-INDEP
+;* V162 tmp158 [V162 ] ( 0, 0 ) byref -> zero-ref "field V61._reference (fldOffset=0x0)" P-INDEP
+;* V163 tmp159 [V163 ] ( 0, 0 ) int -> zero-ref ptr "field V61._length (fldOffset=0x8)" P-INDEP
+; V164 tmp160 [V164 ] ( 2, 1.50) byref -> [rbp-0xA0] do-not-enreg[X] addr-exposed ptr "field V66._reference (fldOffset=0x0)" P-DEP
+; V165 tmp161 [V165 ] ( 4, 2.50) int -> [rbp-0x98] do-not-enreg[X] addr-exposed ptr "field V66._length (fldOffset=0x8)" P-DEP
+;* V166 tmp162 [V166 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V69._reference (fldOffset=0x0)" P-INDEP
+;* V167 tmp163 [V167 ] ( 0, 0 ) int -> zero-ref ptr "field V69._length (fldOffset=0x8)" P-INDEP
+;* V168 tmp164 [V168 ] ( 0, 0 ) byref -> zero-ref "field V70._reference (fldOffset=0x0)" P-INDEP
+;* V169 tmp165 [V169 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0x8)" P-INDEP
+;* V170 tmp166 [V170 ] ( 0, 0 ) byref -> zero-ref "field V72._reference (fldOffset=0x0)" P-INDEP
+;* V171 tmp167 [V171 ] ( 0, 0 ) int -> zero-ref "field V72._length (fldOffset=0x8)" P-INDEP
+;* V172 tmp168 [V172 ] ( 0, 0 ) byref -> zero-ref "field V74._reference (fldOffset=0x0)" P-INDEP
+;* V173 tmp169 [V173 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
+;* V174 tmp170 [V174 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V79._reference (fldOffset=0x0)" P-INDEP
+;* V175 tmp171 [V175 ] ( 0, 0 ) int -> zero-ref ptr "field V79._length (fldOffset=0x8)" P-INDEP
+;* V176 tmp172 [V176 ] ( 0, 0 ) byref -> zero-ref "field V81._reference (fldOffset=0x0)" P-DEP
+;* V177 tmp173 [V177 ] ( 0, 0 ) int -> zero-ref "field V81._length (fldOffset=0x8)" P-DEP
+; V178 tmp174 [V178,T45] ( 2, 1 ) byref -> r13 "field V82._reference (fldOffset=0x0)" P-INDEP
+; V179 tmp175 [V179,T50] ( 2, 1 ) int -> r12 "field V82._length (fldOffset=0x8)" P-INDEP
+;* V180 tmp176 [V180 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V88._reference (fldOffset=0x0)" P-INDEP
+;* V181 tmp177 [V181 ] ( 0, 0 ) int -> zero-ref "field V88._length (fldOffset=0x8)" P-INDEP
+;* V182 tmp178 [V182 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V90._reference (fldOffset=0x0)" P-INDEP
+;* V183 tmp179 [V183 ] ( 0, 0 ) int -> zero-ref ptr "field V90._length (fldOffset=0x8)" P-INDEP
+; V184 tmp180 [V184,T46] ( 2, 1 ) byref -> rdi single-def "field V95._reference (fldOffset=0x0)" P-INDEP
+; V185 tmp181 [V185,T51] ( 2, 1 ) int -> rsi "field V95._length (fldOffset=0x8)" P-INDEP
+; V186 tmp182 [V186,T47] ( 2, 1 ) byref -> rsi single-def "field V101._reference (fldOffset=0x0)" P-INDEP
+; V187 tmp183 [V187,T52] ( 2, 1 ) int -> rdx "field V101._length (fldOffset=0x8)" P-INDEP
+; V188 tmp184 [V188,T31] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V189 GsCookie [V189 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V190 tmp186 [V190,T00] ( 39, 21 ) ref -> rbx single-def "shadowVar"
+; V191 cse0 [V191,T39] ( 3, 1.50) int -> r14 "CSE #04: conservative"
+; V192 cse1 [V192,T40] ( 3, 1.50) int -> r14 "CSE #05: conservative"
+; V193 cse2 [V193,T16] ( 3, 3 ) int -> rdi "CSE #02: moderate"
;
-; Lcl frame size = 136
+; Lcl frame size = 120
G_M13619_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 136
- lea rbp, [rsp+0xB0]
+ sub rsp, 120
+ lea rbp, [rsp+0xA0]
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0xB0], ymm8
- vmovdqu ymmword ptr [rbp-0x90], ymm8
+ vmovdqu ymmword ptr [rbp-0xA0], ymm8
+ vmovdqa xmmword ptr [rbp-0x80], xmm8
mov qword ptr [rbp-0x30], 0xD1FFAB1E
- ;; size=54 bbWeight=1 PerfScore 12.08
+ ;; size=48 bbWeight=1 PerfScore 12.08
G_M13619_IG02:
mov rbx, rdi
vmovsd qword ptr [rbp-0x60], xmm0
vmovd rsi, xmm0
mov rdx, 0xD1FFAB1E
andn rsi, rsi, rdx
je G_M13619_IG33
test dword ptr [rsp], esp
sub rsp, 128
lea r15, [rsp]
mov word ptr [rbp-0x70], 0
xor r14, r14
xor r13d, r13d
movzx rsi, byte ptr [rbp-0x70]
movzx rdx, byte ptr [rbp-0x6F]
or esi, edx
je SHORT G_M13619_IG04
;; size=73 bbWeight=1 PerfScore 13.50
G_M13619_IG03:
lea rsi, [rbp-0x38]
mov edx, 3
lea rdi, [rbp-0x70]
mov rax, 0xD1FFAB1E ; code for System.Buffers.StandardFormat:Format(System.Span`1[ushort]):System.Span`1[ushort]:this
call [rax]System.Buffers.StandardFormat:Format(System.Span`1[ushort]):System.Span`1[ushort]:this
mov r14, rax
mov r13d, edx
;; size=31 bbWeight=0.50 PerfScore 2.50
G_M13619_IG04:
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
mov rax, 0xD1FFAB1E ; code for System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo
call [rax]System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo
mov rcx, rax
lea rsi, [rbp-0x58]
mov bword ptr [rbp-0x80], rsi
mov dword ptr [rbp-0x78], 32
xor rsi, rsi
mov gword ptr [rbp-0x90], rsi
;; size=52 bbWeight=1 PerfScore 9.50
G_M13619_IG05:
mov dword ptr [rbp-0x88], esi
mov rsi, r14
mov edx, r13d
lea rdi, [rbp-0x90]
vmovsd xmm0, qword ptr [rbp-0x60]
mov rax, 0xD1FFAB1E ; code for System.Number:FormatFloat[double,ubyte](byref,double,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo):System.String
call [rax]System.Number:FormatFloat[double,ubyte](byref,double,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo):System.String
test rax, rax
je SHORT G_M13619_IG07
;; size=41 bbWeight=1 PerfScore 9.50
G_M13619_IG06:
mov rsi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rsi]
lea rsi, bword ptr [rax+0x0C]
mov edx, dword ptr [rax+0x08]
mov rcx, r15
mov r8d, 128
lea r9, [rbp-0x68]
mov rax, 0xD1FFAB1E ; code for System.Text.UTF8Encoding+UTF8EncodingSealed:TryGetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref):ubyte:this
call [rax]System.Text.UTF8Encoding+UTF8EncodingSealed:TryGetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref):ubyte:this
jmp SHORT G_M13619_IG09
;; size=47 bbWeight=0.50 PerfScore 5.50
G_M13619_IG07:
mov edx, dword ptr [rbp-0x88]
cmp edx, dword ptr [rbp-0x78]
ja G_M13619_IG32
mov rsi, bword ptr [rbp-0x80]
cmp edx, 128
jbe SHORT G_M13619_IG08
xor edx, edx
mov dword ptr [rbp-0x68], edx
jmp SHORT G_M13619_IG09
;; size=34 bbWeight=0.50 PerfScore 4.75
G_M13619_IG08:
mov edx, edx
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov edi, dword ptr [rbp-0x88]
mov dword ptr [rbp-0x68], edi
;; size=26 bbWeight=0.50 PerfScore 2.88
G_M13619_IG09:
mov r14, gword ptr [rbp-0x90]
test r14, r14
je SHORT G_M13619_IG12
;; size=12 bbWeight=1 PerfScore 2.25
G_M13619_IG10:
xor rdi, rdi
mov gword ptr [rbp-0x90], rdi
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M13619_IG29
;; size=28 bbWeight=0.50 PerfScore 2.75
G_M13619_IG11:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.ArrayPool`1[ubyte]:s_shared
mov rdi, gword ptr [rdi]
mov rsi, r14
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this
;; size=32 bbWeight=0.50 PerfScore 4.50
G_M13619_IG12:
mov edi, dword ptr [rbp-0x68]
cmp edi, 128
ja G_M13619_IG32
mov rsi, r15
mov edx, edi
cmp edx, 0xD1FFAB1E
jg G_M13619_IG31
mov edi, dword ptr [rbx+0x74]
test dil, 2
jne SHORT G_M13619_IG14
;; size=41 bbWeight=1 PerfScore 7.25
G_M13619_IG13:
cmp byte ptr [rbx+0x38], 0
je G_M13619_IG30
cmp byte ptr [rbx+0x3A], 5
je G_M13619_IG30
;; size=20 bbWeight=0.50 PerfScore 4.00
G_M13619_IG14:
test dil, 1
jne SHORT G_M13619_IG16
;; size=6 bbWeight=1 PerfScore 1.25
G_M13619_IG15:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonWriter:WriteStringMinimizedPropertyName(System.ReadOnlySpan`1[ubyte]):this
call [rax]System.Text.Json.Utf8JsonWriter:WriteStringMinimizedPropertyName(System.ReadOnlySpan`1[ubyte]):this
jmp G_M13619_IG25
;; size=20 bbWeight=0.50 PerfScore 2.75
G_M13619_IG16:
mov bword ptr [rbp-0xA0], rsi
mov dword ptr [rbp-0x98], edx
mov r15d, dword ptr [rbx+0x28]
and r15d, 0xD1FFAB1E
imul r15d, dword ptr [rbx+0x2C]
mov edi, r15d
add edi, dword ptr [rbp-0x98]
mov esi, dword ptr [rbx+0x30]
lea esi, [rdi+rsi+0x05]
mov edi, dword ptr [rbx+0x4C]
sub edi, dword ptr [rbx+0x34]
cmp edi, esi
jge SHORT G_M13619_IG17
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonWriter:Grow(int):this
call [rax]System.Text.Json.Utf8JsonWriter:Grow(int):this
;; size=70 bbWeight=0.50 PerfScore 12.12
G_M13619_IG17:
lea r14, bword ptr [rbx+0x40]
xor r13, r13
xor r12d, r12d
mov rdi, gword ptr [r14]
test rdi, rdi
je SHORT G_M13619_IG20
mov rax, qword ptr [rdi]
test dword ptr [rax], 0xD1FFAB1E
jne SHORT G_M13619_IG18
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 r13, rax
mov r12d, edx
jmp SHORT G_M13619_IG19
;; size=47 bbWeight=0.50 PerfScore 9.88
G_M13619_IG18:
lea r13, bword ptr [rdi+0x10]
mov r12d, dword ptr [rdi+0x08]
;; size=8 bbWeight=0.50 PerfScore 1.25
G_M13619_IG19:
mov edi, dword ptr [r14+0x08]
and edi, 0xD1FFAB1E
mov esi, dword ptr [r14+0x0C]
mov ecx, esi
add rcx, rdi
mov edx, r12d
cmp rcx, rdx
ja G_M13619_IG32
add r13, rdi
mov r12d, esi
;; size=37 bbWeight=0.50 PerfScore 3.38
G_M13619_IG20:
cmp dword ptr [rbx+0x28], 0
jge SHORT G_M13619_IG21
mov r14d, dword ptr [rbx+0x34]
lea edi, [r14+0x01]
mov dword ptr [rbx+0x34], edi
cmp r14d, r12d
jae G_M13619_IG34
mov edi, r14d
mov byte ptr [rdi+r13], 44
;; size=34 bbWeight=0.50 PerfScore 5.00
G_M13619_IG21:
cmp byte ptr [rbx+0x3A], 0
je SHORT G_M13619_IG23
cmp dword ptr [rbx+0x30], 2
jne SHORT G_M13619_IG22
mov edi, dword ptr [rbx+0x34]
lea esi, [rdi+0x01]
mov dword ptr [rbx+0x34], esi
cmp edi, r12d
jae G_M13619_IG34
mov byte ptr [rdi+r13], 13
;; size=35 bbWeight=0.50 PerfScore 6.88
G_M13619_IG22:
mov edi, dword ptr [rbx+0x34]
lea esi, [rdi+0x01]
mov dword ptr [rbx+0x34], esi
cmp edi, r12d
jae G_M13619_IG34
mov byte ptr [rdi+r13], 10
;; size=23 bbWeight=0.50 PerfScore 2.88
G_M13619_IG23:
mov edi, dword ptr [rbx+0x34]
cmp edi, r12d
ja G_M13619_IG32
mov esi, edi
add rsi, r13
mov ecx, r12d
sub ecx, edi
mov rdi, rsi
mov esi, ecx
movzx rcx, byte ptr [rbx+0x3B]
mov edx, r15d
mov rax, 0xD1FFAB1E ; code for System.Text.Json.JsonWriterHelper:WriteIndentation(System.Span`1[ubyte],int,ubyte)
call [rax]System.Text.Json.JsonWriterHelper:WriteIndentation(System.Span`1[ubyte],int,ubyte)
add r15d, dword ptr [rbx+0x34]
mov r14d, r15d
mov dword ptr [rbx+0x34], r14d
lea esi, [r14+0x01]
mov dword ptr [rbx+0x34], esi
cmp r14d, r12d
jae G_M13619_IG34
mov esi, r14d
mov byte ptr [rsi+r13], 34
- mov edx, dword ptr [rbx+0x34]
- cmp edx, r12d
+ mov esi, dword ptr [rbx+0x34]
+ cmp esi, r12d
ja G_M13619_IG32
- vxorps xmm0, xmm0, xmm0
- vmovdqu xmmword ptr [rbp-0xB0], xmm0
- mov esi, edx
- add rsi, r13
+ mov edx, esi
+ add rdx, r13
mov edi, r12d
- sub edi, edx
+ sub edi, esi
+ mov rsi, rdx
mov edx, edi
- lea rdi, [rbp-0xB0]
- mov rax, 0xD1FFAB1E ; code for System.Span`1[ubyte]:.ctor(byref,int):this
- call [rax]System.Span`1[ubyte]:.ctor(byref,int):this
- mov rsi, bword ptr [rbp-0xB0]
- mov edx, dword ptr [rbp-0xA8]
lea rdi, [rbp-0xA0]
mov rax, 0xD1FFAB1E ; code for System.ReadOnlySpan`1[ubyte]:CopyTo(System.Span`1[ubyte]):this
call [rax]System.ReadOnlySpan`1[ubyte]:CopyTo(System.Span`1[ubyte]):this
mov r14d, dword ptr [rbx+0x34]
add r14d, dword ptr [rbp-0x98]
mov dword ptr [rbx+0x34], r14d
lea r8d, [r14+0x01]
mov dword ptr [rbx+0x34], r8d
cmp r14d, r12d
jae G_M13619_IG34
mov r8d, r14d
mov byte ptr [r8+r13], 34
mov r14d, dword ptr [rbx+0x34]
lea r8d, [r14+0x01]
mov dword ptr [rbx+0x34], r8d
cmp r14d, r12d
- ;; size=223 bbWeight=0.50 PerfScore 23.29
-G_M13619_IG24:
jae G_M13619_IG34
mov r8d, r14d
mov byte ptr [r8+r13], 58
mov r14d, dword ptr [rbx+0x34]
lea r8d, [r14+0x01]
mov dword ptr [rbx+0x34], r8d
cmp r14d, r12d
+ ;; size=211 bbWeight=0.50 PerfScore 22.88
+G_M13619_IG24:
jae G_M13619_IG34
mov r8d, r14d
mov byte ptr [r8+r13], 32
- ;; size=43 bbWeight=0.50 PerfScore 4.12
+ ;; size=14 bbWeight=0.50 PerfScore 1.12
G_M13619_IG25:
and dword ptr [rbx+0x28], 0xD1FFAB1E
mov word ptr [rbx+0x39], 0x500
;; size=13 bbWeight=1 PerfScore 4.00
G_M13619_IG26:
cmp qword ptr [rbp-0x30], 0xD1FFAB1E
je SHORT G_M13619_IG27
call CORINFO_HELP_FAIL_FAST
;; size=15 bbWeight=1 PerfScore 4.00
G_M13619_IG27:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M13619_IG28:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.50
G_M13619_IG29:
mov rdi, 0xD1FFAB1E ; System.Buffers.ArrayPool`1[ubyte]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M13619_IG11
;; size=20 bbWeight=0 PerfScore 0.00
G_M13619_IG30:
movzx r8, byte ptr [rbx+0x3A]
mov edx, dword ptr [rbx+0x70]
mov edi, 31
xor esi, esi
xor ecx, ecx
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowInvalidOperationException(int,int,int,ubyte,ubyte)
call [rax]System.Text.Json.ThrowHelper:ThrowInvalidOperationException(int,int,int,ubyte,ubyte)
int3
;; size=30 bbWeight=0 PerfScore 0.00
G_M13619_IG31:
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowArgumentException_PropertyNameTooLarge(int)
call [rax]System.Text.Json.ThrowHelper:ThrowArgumentException_PropertyNameTooLarge(int)
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M13619_IG32:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M13619_IG33:
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowArgumentException_ValueNotSupported()
call [rax]System.Text.Json.ThrowHelper:ThrowArgumentException_ValueNotSupported()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M13619_IG34:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1176, prolog size 54, PerfScore 166.50, instruction count 281, allocated bytes for code 1176 (MethodHash=88eecacc) for method System.Text.Json.Utf8JsonWriter:WritePropertyName(double):this (FullOpts)
+; Total bytes of code 1129, prolog size 48, PerfScore 163.08, instruction count 275, allocated bytes for code 1129 (MethodHash=88eecacc) for method System.Text.Json.Utf8JsonWriter:WritePropertyName(double):this (FullOpts)
; ============================================================ -16 (-12.50 % of base) - System.Net.Http.HttpRequestMessage:get_IsExtendedConnectRequest():ubyte:this ; Assembly listing for method System.Net.Http.HttpRequestMessage:get_IsExtendedConnectRequest():ubyte:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 3.50) ref -> rbx this class-hnd single-def <System.Net.Http.HttpRequestMessage>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T01] ( 3, 5 ) ref -> rdi class-hnd single-def "impAppendStmt" <System.Net.Http.HttpMethod>
; V03 tmp2 [V03,T02] ( 3, 3 ) ref -> rdi class-hnd exact single-def "dup spill" <System.Net.Http.Headers.HttpRequestHeaders>
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
; V05 tmp4 [V05,T03] ( 3, 1.50) ref -> rax
; V06 tmp5 [V06,T04] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
-; V07 tmp6 [V07,T05] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+;* V07 tmp6 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;
; Lcl frame size = 8
G_M16845_IG01:
push rbp
push rbx
push rax
lea rbp, [rsp+0x10]
mov rbx, rdi
;; size=11 bbWeight=1 PerfScore 3.75
G_M16845_IG02:
mov rdi, gword ptr [rbx+0x08]
test rdi, rdi
- jne SHORT G_M16845_IG05
+ je SHORT G_M16845_IG04
;; size=9 bbWeight=1 PerfScore 3.25
G_M16845_IG03:
- mov rsi, 0xD1FFAB1E ; const ptr
- cmp gword ptr [rsi], 0
- jne SHORT G_M16845_IG06
- ;; size=16 bbWeight=0.50 PerfScore 2.12
-G_M16845_IG04:
- mov rdi, gword ptr [rbx+0x18]
- test rdi, rdi
- jne SHORT G_M16845_IG08
- xor rax, rax
- jmp SHORT G_M16845_IG09
- ;; size=13 bbWeight=0.50 PerfScore 2.75
-G_M16845_IG05:
mov rsi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rsi]
mov rsi, gword ptr [rsi+0x08]
mov rdi, gword ptr [rdi+0x08]
mov edx, 5
mov rax, 0xD1FFAB1E ; code for System.String:Equals(System.String,System.String,int):ubyte
call [rax]System.String:Equals(System.String,System.String,int):ubyte
test eax, eax
- jne SHORT G_M16845_IG04
+ jne SHORT G_M16845_IG06
;; size=42 bbWeight=0.50 PerfScore 5.50
-G_M16845_IG06:
+G_M16845_IG04:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M16845_IG07:
+G_M16845_IG05:
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M16845_IG08:
+G_M16845_IG06:
+ mov rdi, gword ptr [rbx+0x18]
+ test rdi, rdi
+ je SHORT G_M16845_IG07
mov rax, 0xD1FFAB1E ; code for System.Net.Http.Headers.HttpRequestHeaders:get_Protocol():System.String:this
call [rax]System.Net.Http.Headers.HttpRequestHeaders:get_Protocol():System.String:this
- ;; size=12 bbWeight=0.50 PerfScore 1.62
-G_M16845_IG09:
+ jmp SHORT G_M16845_IG08
+ ;; size=23 bbWeight=0.50 PerfScore 4.25
+G_M16845_IG07:
+ xor rax, rax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M16845_IG08:
test rax, rax
setne al
movzx rax, al
;; size=9 bbWeight=0.50 PerfScore 0.75
-G_M16845_IG10:
+G_M16845_IG09:
add rsp, 8
pop rbx
pop rbp
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 128, prolog size 8, PerfScore 22.12, instruction count 39, allocated bytes for code 128 (MethodHash=3882be32) for method System.Net.Http.HttpRequestMessage:get_IsExtendedConnectRequest():ubyte:this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 20.00, instruction count 36, allocated bytes for code 112 (MethodHash=3882be32) for method System.Net.Http.HttpRequestMessage:get_IsExtendedConnectRequest():ubyte: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/b8f66b94d5feaced49306fcb7c1937b1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 18 minutes 49 seconds.
dotnet/runtime#109164
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: