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] [hez2010] JIT: Propagate assertions into natural loops in global morph #809
Comments
Top method regressions164 (9.51 % of base) - System.Text.ISO2022Encoding:GetBytesCP50225KR(ulong,int,ulong,int,System.Text.ISO2022Encoding+ISO2022Encoder):int:this ; Assembly listing for method System.Text.ISO2022Encoding:GetBytesCP50225KR(ulong,int,ulong,int,System.Text.ISO2022Encoding+ISO2022Encoder):int: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; 10 single block inlinees; 25 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T19] ( 4, 5 ) ref -> r15 this class-hnd single-def <System.Text.ISO2022Encoding>
+; V00 this [V00,T20] ( 4, 5 ) ref -> r15 this class-hnd single-def <System.Text.ISO2022Encoding>
; V01 arg1 [V01,T40] ( 3, 3 ) long -> r13 single-def
; V02 arg2 [V02,T41] ( 3, 3 ) int -> r12 single-def
-; V03 arg3 [V03,T21] ( 4, 4 ) long -> r14 single-def
+; V03 arg3 [V03,T22] ( 4, 4 ) long -> r14 single-def
; V04 arg4 [V04,T42] ( 3, 3 ) int -> [rbp-0x2C] single-def
-; V05 arg5 [V05,T04] ( 17, 10.50) ref -> rbx class-hnd single-def <System.Text.ISO2022Encoding+ISO2022Encoder>
-; V06 loc0 [V06,T00] (156,197 ) ref -> r13 class-hnd exact single-def <System.Text.EncodingByteBuffer>
-; V07 loc1 [V07,T09] ( 9, 11.50) int -> r12
-; V08 loc2 [V08,T20] ( 5, 6 ) int -> [rbp-0x30]
+; V05 arg5 [V05,T05] ( 17, 10.50) ref -> rbx class-hnd single-def <System.Text.ISO2022Encoding+ISO2022Encoder>
+; V06 loc0 [V06,T01] ( 85, 51 ) ref -> r12 class-hnd exact single-def <System.Text.EncodingByteBuffer>
+; V07 loc1 [V07,T10] ( 9, 11.50) int -> [rbp-0x30]
+; V08 loc2 [V08,T21] ( 5, 6 ) int -> [rbp-0x34]
; V09 loc3 [V09,T56] ( 3, 1.50) ushort -> rsi
;* V10 loc4 [V10 ] ( 0, 0 ) ushort -> zero-ref
-; V11 loc5 [V11,T10] ( 4, 8 ) ushort -> rdi
-; V12 loc6 [V12,T23] ( 3, 6 ) ubyte -> [rbp-0x34] spill-single-def
-; V13 loc7 [V13,T24] ( 3, 6 ) ubyte -> [rbp-0x38] spill-single-def
+; V11 loc5 [V11,T11] ( 4, 8 ) ushort -> rdi
+; V12 loc6 [V12,T23] ( 3, 6 ) ubyte -> [rbp-0x38] spill-single-def
+; V13 loc7 [V13,T24] ( 3, 6 ) ubyte -> [rbp-0x3C] spill-single-def
; V14 OutArgs [V14 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V15 tmp1 [V15,T22] ( 3, 6 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.EncodingByteBuffer>
-; V16 tmp2 [V16,T05] ( 6, 12 ) ushort -> rsi "Inline stloc first use temp"
+; V15 tmp1 [V15,T00] ( 74,298 ) ref -> [rbp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.EncodingByteBuffer>
+; V16 tmp2 [V16,T06] ( 6, 12 ) ushort -> rsi "Inline stloc first use temp"
; V17 tmp3 [V17,T25] ( 3, 6 ) long -> rdi "Inline stloc first use temp"
-; V18 tmp4 [V18,T03] ( 4, 16 ) byref -> [rbp-0x48] spill-single-def "Inlining Arg"
-; V19 tmp5 [V19,T11] ( 4, 8 ) ushort -> rsi "Inline stloc first use temp"
+; V18 tmp4 [V18,T04] ( 4, 16 ) byref -> [rbp-0x50] spill-single-def "Inlining Arg"
+; V19 tmp5 [V19,T12] ( 4, 8 ) ushort -> rsi "Inline stloc first use temp"
; V20 tmp6 [V20,T43] ( 2, 4 ) ubyte -> rsi "Inline return value spill temp"
;* V21 tmp7 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V22 tmp8 [V22,T26] ( 3, 6 ) long -> rdi "Inline stloc first use temp"
;* V23 tmp9 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V24 tmp10 [V24,T27] ( 3, 6 ) long -> rdi "Inline stloc first use temp"
;* V25 tmp11 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V26 tmp12 [V26,T28] ( 3, 6 ) long -> rdi "Inline stloc first use temp"
; V27 tmp13 [V27,T29] ( 3, 6 ) ubyte -> rsi "Inline return value spill temp"
; V28 tmp14 [V28,T30] ( 3, 6 ) long -> rdi "Inline stloc first use temp"
;* V29 tmp15 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V30 tmp16 [V30,T31] ( 3, 6 ) long -> rdi "Inline stloc first use temp"
; V31 tmp17 [V31,T44] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
;* V32 tmp18 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V33 tmp19 [V33,T32] ( 3, 6 ) long -> rdi "Inline stloc first use temp"
; V34 tmp20 [V34,T33] ( 3, 6 ) ubyte -> rax "Inline return value spill temp"
; V35 tmp21 [V35,T34] ( 3, 6 ) long -> rdi "Inline stloc first use temp"
;* V36 tmp22 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V37 tmp23 [V37,T35] ( 3, 6 ) long -> rdi "Inline stloc first use temp"
;* V38 tmp24 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V39 tmp25 [V39,T36] ( 3, 6 ) long -> rdi "Inline stloc first use temp"
;* V40 tmp26 [V40,T45] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V41 tmp27 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V42 tmp28 [V42,T57] ( 3, 1.50) long -> rdi "Inline stloc first use temp"
-; V43 tmp29 [V43,T01] ( 3, 48 ) ref -> rdi "argument with side effect"
-; V44 tmp30 [V44,T06] ( 3, 12 ) ref -> rdi "argument with side effect"
+; V43 tmp29 [V43,T02] ( 3, 48 ) ref -> rdi "argument with side effect"
+; V44 tmp30 [V44,T07] ( 3, 12 ) ref -> rdi "argument with side effect"
; V45 tmp31 [V45,T47] ( 3, 3 ) ref -> rdi "argument with side effect"
; V46 tmp32 [V46,T48] ( 3, 3 ) ref -> rdi "argument with side effect"
; V47 tmp33 [V47,T49] ( 3, 3 ) ref -> rdi "argument with side effect"
; V48 tmp34 [V48,T50] ( 3, 3 ) ref -> rdi "argument with side effect"
; V49 tmp35 [V49,T51] ( 3, 3 ) ref -> rdi "argument with side effect"
-; V50 tmp36 [V50,T07] ( 3, 12 ) ref -> rdi "argument with side effect"
+; V50 tmp36 [V50,T08] ( 3, 12 ) ref -> rdi "argument with side effect"
; V51 tmp37 [V51,T52] ( 3, 3 ) ref -> rdi "argument with side effect"
; V52 tmp38 [V52,T53] ( 3, 3 ) ref -> rdi "argument with side effect"
-; V53 tmp39 [V53,T08] ( 3, 12 ) ref -> rdi "argument with side effect"
+; V53 tmp39 [V53,T09] ( 3, 12 ) ref -> rdi "argument with side effect"
; V54 tmp40 [V54,T54] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V55 cse0 [V55,T02] ( 8, 16 ) long -> rdi multi-def "CSE #03: aggressive"
-; V56 cse1 [V56,T12] ( 4, 8 ) long -> rdi "CSE #04: moderate"
-; V57 cse2 [V57,T13] ( 4, 8 ) long -> rdi "CSE #05: moderate"
-; V58 cse3 [V58,T14] ( 4, 8 ) long -> rdi "CSE #06: moderate"
-; V59 cse4 [V59,T15] ( 4, 8 ) long -> rdi "CSE #08: moderate"
-; V60 cse5 [V60,T16] ( 4, 8 ) long -> rdi "CSE #09: moderate"
-; V61 cse6 [V61,T17] ( 4, 8 ) long -> rdi "CSE #10: moderate"
-; V62 cse7 [V62,T18] ( 4, 8 ) long -> rdi "CSE #14: moderate"
+; V55 cse0 [V55,T03] ( 8, 16 ) long -> rdi multi-def "CSE #03: aggressive"
+; V56 cse1 [V56,T13] ( 4, 8 ) long -> rdi "CSE #04: moderate"
+; V57 cse2 [V57,T14] ( 4, 8 ) long -> rdi "CSE #05: moderate"
+; V58 cse3 [V58,T15] ( 4, 8 ) long -> rdi "CSE #06: moderate"
+; V59 cse4 [V59,T16] ( 4, 8 ) long -> rdi "CSE #08: moderate"
+; V60 cse5 [V60,T17] ( 4, 8 ) long -> rdi "CSE #09: moderate"
+; V61 cse6 [V61,T18] ( 4, 8 ) long -> rdi "CSE #10: moderate"
+; V62 cse7 [V62,T19] ( 4, 8 ) long -> rdi "CSE #14: moderate"
; V63 cse8 [V63,T37] ( 3, 6 ) long -> rdi "CSE #02: moderate"
; V64 cse9 [V64,T38] ( 3, 6 ) long -> rdi "CSE #07: moderate"
; V65 cse10 [V65,T39] ( 3, 6 ) long -> rdi "CSE #11: moderate"
; V66 cse11 [V66,T55] ( 4, 2 ) long -> rdi "CSE #29: conservative"
; V67 cse12 [V67,T46] ( 6, 3 ) long -> r15 multi-def "CSE #16: conservative"
; V68 cse13 [V68,T58] ( 3, 1.50) long -> rdi "CSE #17: conservative"
; V69 cse14 [V69,T59] ( 3, 1.50) long -> rdi "CSE #18: conservative"
; V70 cse15 [V70,T60] ( 3, 1.50) long -> rdi "CSE #19: conservative"
; V71 cse16 [V71,T61] ( 3, 1.50) long -> rdi "CSE #20: conservative"
; V72 cse17 [V72,T62] ( 3, 1.50) long -> rdi "CSE #28: conservative"
; V73 cse18 [V73,T63] ( 3, 1.50) long -> rdi "CSE #30: conservative"
;
-; Lcl frame size = 40
+; Lcl frame size = 56
G_M16009_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 40
- lea rbp, [rsp+0x50]
+ sub rsp, 56
+ lea rbp, [rsp+0x60]
mov dword ptr [rbp-0x2C], r8d
mov r15, rdi
mov r13, rsi
mov r12d, edx
mov r14, rcx
mov rbx, r9
;; size=38 bbWeight=1 PerfScore 9.00
G_M16009_IG02:
mov rdi, 0xD1FFAB1E ; System.Text.EncodingByteBuffer
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x40], rax
+ mov gword ptr [rbp-0x48], rax
mov dword ptr [rsp], r12d
mov rdi, rax
mov rsi, r15
mov rdx, rbx
mov rcx, r14
mov r8d, dword ptr [rbp-0x2C]
mov r9, r13
mov r10, 0xD1FFAB1E ; code for System.Text.EncodingByteBuffer:.ctor(System.Text.EncodingNLS,System.Text.EncoderNLS,ulong,int,ulong,int):this
call [r10]System.Text.EncodingByteBuffer:.ctor(System.Text.EncodingNLS,System.Text.EncoderNLS,ulong,int,ulong,int):this
- mov r13, gword ptr [rbp-0x40]
- mov r12d, 11
+ mov r13, gword ptr [rbp-0x48]
+ mov r12, r13
mov eax, 11
+ mov ecx, 11
test rbx, rbx
mov dword ptr [rbp-0x30], eax
+ mov dword ptr [rbp-0x34], ecx
je SHORT G_M16009_IG05
- ;; size=78 bbWeight=1 PerfScore 12.50
+ ;; size=83 bbWeight=1 PerfScore 13.75
G_M16009_IG03:
movzx rsi, word ptr [rbx+0x34]
- mov r12d, dword ptr [rbx+0x38]
- mov eax, dword ptr [rbx+0x3C]
+ mov eax, dword ptr [rbx+0x38]
mov dword ptr [rbp-0x30], eax
+ mov ecx, dword ptr [rbx+0x3C]
+ mov dword ptr [rbp-0x34], ecx
test esi, esi
jle SHORT G_M16009_IG05
- lea rdi, bword ptr [r13+0x58]
- lea rdx, bword ptr [r13+0x38]
- mov rcx, 0xD1FFAB1E ; code for System.Text.EncoderFallbackBufferHelper:InternalFallback(ushort,byref):ubyte:this
- call [rcx]System.Text.EncoderFallbackBufferHelper:InternalFallback(ushort,byref):ubyte:this
+ lea rdi, bword ptr [r12+0x58]
+ lea rdx, bword ptr [r12+0x38]
+ mov r8, 0xD1FFAB1E ; code for System.Text.EncoderFallbackBufferHelper:InternalFallback(ushort,byref):ubyte:this
+ call [r8]System.Text.EncoderFallbackBufferHelper:InternalFallback(ushort,byref):ubyte:this
jmp SHORT G_M16009_IG05
- ;; size=40 bbWeight=0.50 PerfScore 7.25
+ ;; size=45 bbWeight=0.50 PerfScore 7.75
G_M16009_IG04:
lea rdi, bword ptr [r13+0x58]
lea rdx, bword ptr [r13+0x38]
mov rax, 0xD1FFAB1E ; code for System.Text.EncoderFallbackBufferHelper:InternalFallback(ushort,byref):ubyte:this
call [rax]System.Text.EncoderFallbackBufferHelper:InternalFallback(ushort,byref):ubyte:this
;; size=20 bbWeight=2 PerfScore 8.50
G_M16009_IG05:
- mov rdi, gword ptr [r13+0x18]
- mov rcx, qword ptr [rdi]
- mov rcx, qword ptr [rcx+0x48]
- call [rcx]System.Text.EncoderFallbackBuffer:get_Remaining():int:this
+ mov rdi, gword ptr [r12+0x18]
+ mov rdx, qword ptr [rdi]
+ mov rdx, qword ptr [rdx+0x48]
+ call [rdx]System.Text.EncoderFallbackBuffer:get_Remaining():int:this
test eax, eax
jg SHORT G_M16009_IG07
- ;; size=17 bbWeight=8 PerfScore 82.00
+ ;; size=18 bbWeight=8 PerfScore 82.00
G_M16009_IG06:
mov rdi, qword ptr [r13+0x38]
cmp rdi, qword ptr [r13+0x48]
- jae G_M16009_IG34
+ jae G_M16009_IG36
;; size=14 bbWeight=4 PerfScore 24.00
G_M16009_IG07:
lea rax, bword ptr [r13+0x58]
- mov bword ptr [rbp-0x48], rax
+ mov bword ptr [rbp-0x50], rax
mov rdi, gword ptr [rax+0x08]
mov rcx, qword ptr [rdi]
mov rcx, qword ptr [rcx+0x40]
call [rcx+0x30]System.Text.EncoderFallbackBuffer:GetNextChar():ushort:this
mov esi, eax
test esi, esi
setne dil
- mov rdx, bword ptr [rbp-0x48]
+ mov rdx, bword ptr [rbp-0x50]
mov byte ptr [rdx+0x26], dil
test esi, esi
jne SHORT G_M16009_IG08
xor edi, edi
mov dword ptr [rdx+0x20], edi
;; size=47 bbWeight=2 PerfScore 33.00
G_M16009_IG08:
test esi, esi
jne SHORT G_M16009_IG09
mov rdi, qword ptr [r13+0x38]
cmp rdi, qword ptr [r13+0x48]
jae SHORT G_M16009_IG09
lea rsi, [rdi+0x02]
mov qword ptr [r13+0x38], rsi
movzx rsi, word ptr [rdi]
;; size=25 bbWeight=2 PerfScore 21.50
G_M16009_IG09:
mov rdi, qword ptr [r15+0x70]
mov edx, esi
movzx rdi, word ptr [rdi+2*rdx]
mov edx, edi
sar edx, 8
movzx rax, dl
- mov dword ptr [rbp-0x34], eax
+ mov dword ptr [rbp-0x38], eax
movzx rcx, dil
- mov dword ptr [rbp-0x38], ecx
+ mov dword ptr [rbp-0x3C], ecx
test eax, eax
jne SHORT G_M16009_IG14
test edi, edi
jne SHORT G_M16009_IG10
test esi, esi
jne G_M16009_IG04
;; size=44 bbWeight=2 PerfScore 22.50
G_M16009_IG10:
- cmp r12d, 11
+ mov eax, dword ptr [rbp-0x30]
+ cmp eax, 11
je SHORT G_M16009_IG12
mov rdi, qword ptr [r13+0x20]
test rdi, rdi
je SHORT G_M16009_IG11
cmp rdi, qword ptr [r13+0x30]
- jae G_M16009_IG40
+ jae G_M16009_IG44
lea rax, [rdi+0x01]
mov qword ptr [r13+0x20], rax
mov byte ptr [rdi], 15
- ;; size=36 bbWeight=2 PerfScore 22.00
+ ;; size=38 bbWeight=2 PerfScore 24.00
G_M16009_IG11:
inc dword ptr [r13+0x50]
- mov r12d, 11
- ;; size=10 bbWeight=2 PerfScore 6.50
+ mov eax, 11
+ ;; size=9 bbWeight=2 PerfScore 6.50
G_M16009_IG12:
mov rdi, qword ptr [r13+0x20]
test rdi, rdi
je SHORT G_M16009_IG13
cmp rdi, qword ptr [r13+0x30]
- jae G_M16009_IG37
- lea rax, [rdi+0x01]
- mov qword ptr [r13+0x20], rax
+ jae G_M16009_IG39
+ lea rdx, [rdi+0x01]
+ mov qword ptr [r13+0x20], rdx
mov byte ptr [rdi], cl
;; size=29 bbWeight=2 PerfScore 19.50
G_M16009_IG13:
inc dword ptr [r13+0x50]
+ mov dword ptr [rbp-0x30], eax
jmp G_M16009_IG05
- ;; size=9 bbWeight=2 PerfScore 10.00
+ ;; size=12 bbWeight=2 PerfScore 12.00
G_M16009_IG14:
- cmp dword ptr [rbp-0x30], 5
+ cmp dword ptr [rbp-0x34], 5
je G_M16009_IG25
mov rdi, qword ptr [r13+0x20]
test rdi, rdi
je SHORT G_M16009_IG15
mov rsi, qword ptr [r13+0x30]
add rsi, -3
cmp rdi, rsi
- jae G_M16009_IG55
+ jae G_M16009_IG65
lea rsi, [rdi+0x01]
mov qword ptr [r13+0x20], rsi
mov byte ptr [rdi], 27
;; size=47 bbWeight=2 PerfScore 24.50
G_M16009_IG15:
inc dword ptr [r13+0x50]
mov rdi, qword ptr [r13+0x20]
test rdi, rdi
je SHORT G_M16009_IG16
mov rsi, qword ptr [r13+0x30]
add rsi, -2
cmp rdi, rsi
- jae G_M16009_IG52
+ jae G_M16009_IG62
lea rsi, [rdi+0x01]
mov qword ptr [r13+0x20], rsi
mov byte ptr [rdi], 36
;; size=41 bbWeight=2 PerfScore 24.50
G_M16009_IG16:
inc dword ptr [r13+0x50]
mov rdi, qword ptr [r13+0x20]
test rdi, rdi
je SHORT G_M16009_IG17
mov rsi, qword ptr [r13+0x30]
dec rsi
cmp rdi, rsi
- jae G_M16009_IG49
+ jae G_M16009_IG59
lea rsi, [rdi+0x01]
mov qword ptr [r13+0x20], rsi
mov byte ptr [rdi], 41
;; size=40 bbWeight=2 PerfScore 24.50
G_M16009_IG17:
inc dword ptr [r13+0x50]
mov rdi, qword ptr [r13+0x20]
test rdi, rdi
je SHORT G_M16009_IG18
cmp rdi, qword ptr [r13+0x30]
jae SHORT G_M16009_IG19
lea rsi, [rdi+0x01]
mov qword ptr [r13+0x20], rsi
mov byte ptr [rdi], 67
;; size=30 bbWeight=2 PerfScore 25.50
G_M16009_IG18:
inc dword ptr [r13+0x50]
mov esi, 1
jmp SHORT G_M16009_IG24
;; size=11 bbWeight=2 PerfScore 10.50
G_M16009_IG19:
cmp byte ptr [r13+0x7E], 0
jne SHORT G_M16009_IG22
mov rdi, qword ptr [r13+0x38]
cmp rdi, qword ptr [r13+0x40]
ja SHORT G_M16009_IG21
;; size=17 bbWeight=2 PerfScore 20.00
G_M16009_IG20:
jmp SHORT G_M16009_IG23
;; size=2 bbWeight=1 PerfScore 2.00
G_M16009_IG21:
add rdi, -2
mov qword ptr [r13+0x38], rdi
jmp SHORT G_M16009_IG23
;; size=10 bbWeight=2 PerfScore 6.50
G_M16009_IG22:
mov rdi, gword ptr [r13+0x18]
mov rsi, qword ptr [rdi]
mov rsi, qword ptr [rsi+0x40]
call [rsi+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
;; size=14 bbWeight=2 PerfScore 18.00
G_M16009_IG23:
mov rdx, qword ptr [r13+0x20]
cmp rdx, qword ptr [r13+0x28]
sete dl
movzx rdx, dl
mov rsi, gword ptr [r13+0x10]
mov rdi, gword ptr [r13+0x08]
mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
xor esi, esi
- mov ecx, dword ptr [rbp-0x38]
+ mov ecx, dword ptr [rbp-0x3C]
;; size=41 bbWeight=2 PerfScore 35.50
G_M16009_IG24:
test esi, esi
- je G_M16009_IG34
- mov dword ptr [rbp-0x30], 5
+ je G_M16009_IG36
+ mov dword ptr [rbp-0x34], 5
;; size=15 bbWeight=2 PerfScore 4.50
G_M16009_IG25:
- cmp r12d, 5
+ mov esi, dword ptr [rbp-0x30]
+ cmp esi, 5
je SHORT G_M16009_IG27
mov rdi, qword ptr [r13+0x20]
test rdi, rdi
je SHORT G_M16009_IG26
cmp rdi, qword ptr [r13+0x30]
- jae G_M16009_IG46
+ jae G_M16009_IG54
lea rsi, [rdi+0x01]
mov qword ptr [r13+0x20], rsi
mov byte ptr [rdi], 14
- ;; size=36 bbWeight=2 PerfScore 22.00
+ ;; size=38 bbWeight=2 PerfScore 24.00
G_M16009_IG26:
inc dword ptr [r13+0x50]
- mov r12d, 5
- ;; size=10 bbWeight=2 PerfScore 6.50
+ mov dword ptr [rbp-0x30], 5
+ mov esi, dword ptr [rbp-0x30]
+ ;; size=14 bbWeight=2 PerfScore 10.00
G_M16009_IG27:
mov rdi, qword ptr [r13+0x20]
test rdi, rdi
je SHORT G_M16009_IG28
- mov rsi, qword ptr [r13+0x30]
- dec rsi
- cmp rdi, rsi
- jae G_M16009_IG43
- lea rsi, [rdi+0x01]
- mov qword ptr [r13+0x20], rsi
- mov eax, dword ptr [rbp-0x34]
+ mov r8, qword ptr [r13+0x30]
+ dec r8
+ cmp rdi, r8
+ jae G_M16009_IG49
+ lea r8, [rdi+0x01]
+ mov qword ptr [r13+0x20], r8
+ mov eax, dword ptr [rbp-0x38]
mov byte ptr [rdi], al
;; size=38 bbWeight=2 PerfScore 20.50
G_M16009_IG28:
inc dword ptr [r13+0x50]
mov rdi, qword ptr [r13+0x20]
test rdi, rdi
je SHORT G_M16009_IG29
cmp rdi, qword ptr [r13+0x30]
jae SHORT G_M16009_IG30
lea rax, [rdi+0x01]
mov qword ptr [r13+0x20], rax
mov byte ptr [rdi], cl
;; size=29 bbWeight=2 PerfScore 25.50
G_M16009_IG29:
inc dword ptr [r13+0x50]
mov eax, 1
- jmp SHORT G_M16009_IG33
+ jmp SHORT G_M16009_IG35
;; size=11 bbWeight=2 PerfScore 10.50
G_M16009_IG30:
cmp byte ptr [r13+0x7E], 0
- jne SHORT G_M16009_IG31
+ jne SHORT G_M16009_IG33
mov rdi, qword ptr [r13+0x38]
cmp rdi, qword ptr [r13+0x40]
- jbe SHORT G_M16009_IG32
+ ja SHORT G_M16009_IG32
+ ;; size=17 bbWeight=2 PerfScore 20.00
+G_M16009_IG31:
+ mov dword ptr [rbp-0x30], esi
+ jmp SHORT G_M16009_IG34
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M16009_IG32:
add rdi, -2
mov qword ptr [r13+0x38], rdi
- jmp SHORT G_M16009_IG32
- ;; size=27 bbWeight=2 PerfScore 26.50
-G_M16009_IG31:
+ mov dword ptr [rbp-0x30], esi
+ jmp SHORT G_M16009_IG34
+ ;; size=13 bbWeight=2 PerfScore 8.50
+G_M16009_IG33:
+ mov dword ptr [rbp-0x30], esi
mov rdi, gword ptr [r13+0x18]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
- ;; size=14 bbWeight=2 PerfScore 18.00
-G_M16009_IG32:
+ ;; size=17 bbWeight=2 PerfScore 20.00
+G_M16009_IG34:
mov rdx, qword ptr [r13+0x20]
cmp rdx, qword ptr [r13+0x28]
sete dl
movzx rdx, dl
mov rsi, gword ptr [r13+0x10]
mov rdi, gword ptr [r13+0x08]
mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
xor eax, eax
- ;; size=38 bbWeight=2 PerfScore 33.50
-G_M16009_IG33:
- test eax, eax
- jne G_M16009_IG05
- ;; size=8 bbWeight=2 PerfScore 2.50
-G_M16009_IG34:
- cmp r12d, 11
- je G_M16009_IG62
- ;; size=10 bbWeight=1 PerfScore 1.25
+ mov esi, dword ptr [rbp-0x30]
+ ;; size=41 bbWeight=2 PerfScore 35.50
G_M16009_IG35:
- test rbx, rbx
- je SHORT G_M16009_IG36
- cmp byte ptr [rbx+0x36], 0
- je G_M16009_IG62
- ;; size=15 bbWeight=0.50 PerfScore 2.62
+ test eax, eax
+ mov dword ptr [rbp-0x30], esi
+ jne G_M16009_IG05
+ ;; size=11 bbWeight=2 PerfScore 4.50
G_M16009_IG36:
- mov rdi, qword ptr [r13+0x20]
- test rdi, rdi
- je G_M16009_IG59
- cmp rdi, qword ptr [r13+0x30]
- jb G_M16009_IG58
- cmp byte ptr [r13+0x7E], 0
- je G_M16009_IG60
- mov rdi, gword ptr [r13+0x18]
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x40]
- call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
- jmp G_M16009_IG61
- ;; size=53 bbWeight=0.50 PerfScore 11.12
+ mov r15d, dword ptr [rbp-0x30]
+ cmp r15d, 11
+ je G_M16009_IG72
+ ;; size=14 bbWeight=1 PerfScore 2.25
G_M16009_IG37:
- cmp byte ptr [r13+0x7E], 0
- jne SHORT G_M16009_IG38
- mov rdi, qword ptr [r13+0x38]
- cmp rdi, qword ptr [r13+0x40]
- jbe SHORT G_M16009_IG39
- add rdi, -2
- mov qword ptr [r13+0x38], rdi
- jmp SHORT G_M16009_IG39
- ;; size=27 bbWeight=0.50 PerfScore 6.62
+ test rbx, rbx
+ je SHORT G_M16009_IG38
+ cmp byte ptr [rbx+0x36], 0
+ je G_M16009_IG72
+ ;; size=15 bbWeight=0.50 PerfScore 2.62
G_M16009_IG38:
- mov rdi, gword ptr [r13+0x18]
+ mov rdi, qword ptr [r12+0x20]
+ test rdi, rdi
+ je G_M16009_IG69
+ cmp rdi, qword ptr [r12+0x30]
+ jb G_M16009_IG68
+ cmp byte ptr [r12+0x7E], 0
+ je G_M16009_IG70
+ mov rdi, gword ptr [r12+0x18]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
- ;; size=14 bbWeight=0.50 PerfScore 4.50
+ jmp G_M16009_IG71
+ ;; size=57 bbWeight=0.50 PerfScore 11.12
G_M16009_IG39:
- mov rdx, qword ptr [r13+0x20]
- cmp rdx, qword ptr [r13+0x28]
- sete dl
- movzx rdx, dl
- mov rsi, gword ptr [r13+0x10]
- mov rdi, gword ptr [r13+0x08]
- mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
- cmp dword ptr [rdi], edi
- call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
- jmp G_M16009_IG34
- ;; size=41 bbWeight=0.50 PerfScore 9.25
+ cmp byte ptr [r12+0x7E], 0
+ jne SHORT G_M16009_IG42
+ mov rdi, qword ptr [r12+0x38]
+ cmp rdi, qword ptr [r12+0x40]
+ ja SHORT G_M16009_IG41
+ ;; size=20 bbWeight=0.50 PerfScore 5.00
G_M16009_IG40:
- cmp byte ptr [r13+0x7E], 0
- jne SHORT G_M16009_IG41
- mov r15, qword ptr [r13+0x38]
- cmp r15, qword ptr [r13+0x40]
- jbe SHORT G_M16009_IG42
- add r15, -2
- mov qword ptr [r13+0x38], r15
- jmp SHORT G_M16009_IG42
- ;; size=27 bbWeight=0.50 PerfScore 6.62
+ mov dword ptr [rbp-0x30], eax
+ jmp SHORT G_M16009_IG43
+ ;; size=5 bbWeight=0.25 PerfScore 0.75
G_M16009_IG41:
- mov rdi, gword ptr [r13+0x18]
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x40]
- call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
- ;; size=14 bbWeight=0.50 PerfScore 4.50
+ add rdi, -2
+ mov qword ptr [r12+0x38], rdi
+ mov dword ptr [rbp-0x30], eax
+ jmp SHORT G_M16009_IG43
+ ;; size=14 bbWeight=0.50 PerfScore 2.12
G_M16009_IG42:
- mov rdx, qword ptr [r13+0x20]
- cmp rdx, qword ptr [r13+0x28]
- sete dl
- movzx rdx, dl
- mov rsi, gword ptr [r13+0x10]
- mov rdi, gword ptr [r13+0x08]
- mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
- cmp dword ptr [rdi], edi
- call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
- jmp G_M16009_IG34
- ;; size=41 bbWeight=0.50 PerfScore 9.25
+ mov dword ptr [rbp-0x30], eax
+ mov rdi, gword ptr [r12+0x18]
+ mov rcx, qword ptr [rdi]
+ mov rcx, qword ptr [rcx+0x40]
+ call [rcx+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
+ ;; size=18 bbWeight=0.50 PerfScore 5.00
G_M16009_IG43:
- cmp byte ptr [r13+0x7E], 0
- jne SHORT G_M16009_IG44
- mov rdi, qword ptr [r13+0x38]
- cmp rdi, qword ptr [r13+0x40]
- jbe SHORT G_M16009_IG45
- add rdi, -2
- mov qword ptr [r13+0x38], rdi
- jmp SHORT G_M16009_IG45
- ;; size=27 bbWeight=0.50 PerfScore 6.62
+ mov rdx, qword ptr [r12+0x20]
+ cmp rdx, qword ptr [r12+0x28]
+ sete dl
+ movzx rdx, dl
+ mov rsi, gword ptr [r12+0x10]
+ mov rdi, gword ptr [r12+0x08]
+ mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
+ cmp dword ptr [rdi], edi
+ call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
+ jmp G_M16009_IG36
+ ;; size=45 bbWeight=0.50 PerfScore 9.25
G_M16009_IG44:
- mov rdi, gword ptr [r13+0x18]
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x40]
- call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
- ;; size=14 bbWeight=0.50 PerfScore 4.50
-G_M16009_IG45:
- mov rdx, qword ptr [r13+0x20]
- cmp rdx, qword ptr [r13+0x28]
- sete dl
- movzx rdx, dl
- mov rsi, gword ptr [r13+0x10]
- mov rdi, gword ptr [r13+0x08]
- mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
- cmp dword ptr [rdi], edi
- call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
- jmp G_M16009_IG34
- ;; size=41 bbWeight=0.50 PerfScore 9.25
-G_M16009_IG46:
- cmp byte ptr [r13+0x7E], 0
+ cmp byte ptr [r12+0x7E], 0
jne SHORT G_M16009_IG47
- mov rdi, qword ptr [r13+0x38]
- cmp rdi, qword ptr [r13+0x40]
- jbe SHORT G_M16009_IG48
- add rdi, -2
- mov qword ptr [r13+0x38], rdi
+ mov r15, qword ptr [r12+0x38]
+ cmp r15, qword ptr [r12+0x40]
+ ja SHORT G_M16009_IG46
+ ;; size=20 bbWeight=0.50 PerfScore 5.00
+G_M16009_IG45:
+ mov dword ptr [rbp-0x30], eax
jmp SHORT G_M16009_IG48
- ;; size=27 bbWeight=0.50 PerfScore 6.62
+ ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M16009_IG46:
+ add r15, -2
+ mov qword ptr [r12+0x38], r15
+ mov dword ptr [rbp-0x30], eax
+ jmp SHORT G_M16009_IG48
+ ;; size=14 bbWeight=0.50 PerfScore 2.12
G_M16009_IG47:
- mov rdi, gword ptr [r13+0x18]
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x40]
- call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
- ;; size=14 bbWeight=0.50 PerfScore 4.50
+ mov dword ptr [rbp-0x30], eax
+ mov rdi, gword ptr [r12+0x18]
+ mov rcx, qword ptr [rdi]
+ mov rcx, qword ptr [rcx+0x40]
+ call [rcx+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
+ ;; size=18 bbWeight=0.50 PerfScore 5.00
G_M16009_IG48:
- mov rdx, qword ptr [r13+0x20]
- cmp rdx, qword ptr [r13+0x28]
+ mov rdx, qword ptr [r12+0x20]
+ cmp rdx, qword ptr [r12+0x28]
sete dl
movzx rdx, dl
- mov rsi, gword ptr [r13+0x10]
- mov rdi, gword ptr [r13+0x08]
+ mov rsi, gword ptr [r12+0x10]
+ mov rdi, gword ptr [r12+0x08]
mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
- jmp G_M16009_IG34
- ;; size=41 bbWeight=0.50 PerfScore 9.25
+ jmp G_M16009_IG36
+ ;; size=45 bbWeight=0.50 PerfScore 9.25
G_M16009_IG49:
- cmp byte ptr [r13+0x7E], 0
- jne SHORT G_M16009_IG50
- mov rdi, qword ptr [r13+0x38]
- cmp rdi, qword ptr [r13+0x40]
- jbe SHORT G_M16009_IG51
- add rdi, -2
- mov qword ptr [r13+0x38], rdi
- jmp SHORT G_M16009_IG51
- ;; size=27 bbWeight=0.50 PerfScore 6.62
+ cmp byte ptr [r12+0x7E], 0
+ jne SHORT G_M16009_IG52
+ mov rdi, qword ptr [r12+0x38]
+ cmp rdi, qword ptr [r12+0x40]
+ ja SHORT G_M16009_IG51
+ ;; size=20 bbWeight=0.50 PerfScore 5.00
G_M16009_IG50:
- mov rdi, gword ptr [r13+0x18]
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x40]
- call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
- ;; size=14 bbWeight=0.50 PerfScore 4.50
+ mov dword ptr [rbp-0x30], esi
+ jmp SHORT G_M16009_IG53
+ ;; size=5 bbWeight=0.25 PerfScore 0.75
G_M16009_IG51:
- mov rdx, qword ptr [r13+0x20]
- cmp rdx, qword ptr [r13+0x28]
- sete dl
- movzx rdx, dl
- mov rsi, gword ptr [r13+0x10]
- mov rdi, gword ptr [r13+0x08]
- mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
- cmp dword ptr [rdi], edi
- call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
- jmp G_M16009_IG34
- ;; size=41 bbWeight=0.50 PerfScore 9.25
-G_M16009_IG52:
- cmp byte ptr [r13+0x7E], 0
- jne SHORT G_M16009_IG53
- mov rdi, qword ptr [r13+0x38]
- cmp rdi, qword ptr [r13+0x40]
- jbe SHORT G_M16009_IG54
add rdi, -2
- mov qword ptr [r13+0x38], rdi
- jmp SHORT G_M16009_IG54
- ;; size=27 bbWeight=0.50 PerfScore 6.62
+ mov qword ptr [r12+0x38], rdi
+ mov dword ptr [rbp-0x30], esi
+ jmp SHORT G_M16009_IG53
+ ;; size=14 bbWeight=0.50 PerfScore 2.12
+G_M16009_IG52:
+ mov dword ptr [rbp-0x30], esi
+ mov rdi, gword ptr [r12+0x18]
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x40]
+ call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
+ ;; size=18 bbWeight=0.50 PerfScore 5.00
G_M16009_IG53:
- mov rdi, gword ptr [r13+0x18]
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x40]
- call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
- ;; size=14 bbWeight=0.50 PerfScore 4.50
+ mov rdx, qword ptr [r12+0x20]
+ cmp rdx, qword ptr [r12+0x28]
+ sete dl
+ movzx rdx, dl
+ mov rsi, gword ptr [r12+0x10]
+ mov rdi, gword ptr [r12+0x08]
+ mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
+ cmp dword ptr [rdi], edi
+ call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
+ jmp G_M16009_IG36
+ ;; size=45 bbWeight=0.50 PerfScore 9.25
G_M16009_IG54:
- mov rdx, qword ptr [r13+0x20]
- cmp rdx, qword ptr [r13+0x28]
- sete dl
- movzx rdx, dl
- mov rsi, gword ptr [r13+0x10]
- mov rdi, gword ptr [r13+0x08]
- mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
- cmp dword ptr [rdi], edi
- call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
- jmp G_M16009_IG34
- ;; size=41 bbWeight=0.50 PerfScore 9.25
+ cmp byte ptr [r12+0x7E], 0
+ jne SHORT G_M16009_IG57
+ mov rdi, qword ptr [r12+0x38]
+ cmp rdi, qword ptr [r12+0x40]
+ ja SHORT G_M16009_IG56
+ ;; size=20 bbWeight=0.50 PerfScore 5.00
G_M16009_IG55:
- cmp byte ptr [r13+0x7E], 0
- jne SHORT G_M16009_IG56
- mov r15, qword ptr [r13+0x38]
- cmp r15, qword ptr [r13+0x40]
- jbe SHORT G_M16009_IG57
- lea rdi, [r15-0x02]
- mov qword ptr [r13+0x38], rdi
- jmp SHORT G_M16009_IG57
- ;; size=27 bbWeight=0.50 PerfScore 6.75
+ mov dword ptr [rbp-0x30], esi
+ jmp SHORT G_M16009_IG58
+ ;; size=5 bbWeight=0.25 PerfScore 0.75
G_M16009_IG56:
- mov rdi, gword ptr [r13+0x18]
+ add rdi, -2
+ mov qword ptr [r12+0x38], rdi
+ mov dword ptr [rbp-0x30], esi
+ jmp SHORT G_M16009_IG58
+ ;; size=14 bbWeight=0.50 PerfScore 2.12
+G_M16009_IG57:
+ mov dword ptr [rbp-0x30], esi
+ mov rdi, gword ptr [r12+0x18]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
- ;; size=14 bbWeight=0.50 PerfScore 4.50
-G_M16009_IG57:
- mov rdx, qword ptr [r13+0x20]
- cmp rdx, qword ptr [r13+0x28]
+ ;; size=18 bbWeight=0.50 PerfScore 5.00
+G_M16009_IG58:
+ mov rdx, qword ptr [r12+0x20]
+ cmp rdx, qword ptr [r12+0x28]
sete dl
movzx rdx, dl
- mov rsi, gword ptr [r13+0x10]
- mov rdi, gword ptr [r13+0x08]
+ mov rsi, gword ptr [r12+0x10]
+ mov rdi, gword ptr [r12+0x08]
mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
- jmp G_M16009_IG34
- ;; size=41 bbWeight=0.50 PerfScore 9.25
-G_M16009_IG58:
- lea rax, [rdi+0x01]
- mov qword ptr [r13+0x20], rax
- mov byte ptr [rdi], 15
- ;; size=11 bbWeight=0.50 PerfScore 1.25
+ jmp G_M16009_IG36
+ ;; size=45 bbWeight=0.50 PerfScore 9.25
G_M16009_IG59:
- inc dword ptr [r13+0x50]
- mov r12d, 11
- jmp SHORT G_M16009_IG62
- ;; size=12 bbWeight=0.50 PerfScore 2.62
-G_M16009_IG60:
- mov rdi, qword ptr [r13+0x38]
- cmp rdi, qword ptr [r13+0x40]
+ cmp byte ptr [r12+0x7E], 0
+ jne SHORT G_M16009_IG60
+ mov rdi, qword ptr [r12+0x38]
+ cmp rdi, qword ptr [r12+0x40]
jbe SHORT G_M16009_IG61
add rdi, -2
- mov qword ptr [r13+0x38], rdi
- ;; size=18 bbWeight=0.50 PerfScore 3.62
+ mov qword ptr [r12+0x38], rdi
+ jmp SHORT G_M16009_IG61
+ ;; size=31 bbWeight=0.50 PerfScore 6.62
+G_M16009_IG60:
+ mov rdi, gword ptr [r12+0x18]
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x40]
+ call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
+ ;; size=15 bbWeight=0.50 PerfScore 4.50
G_M16009_IG61:
- mov rdx, qword ptr [r13+0x20]
- cmp rdx, qword ptr [r13+0x28]
+ mov rdx, qword ptr [r12+0x20]
+ cmp rdx, qword ptr [r12+0x28]
sete dl
movzx rdx, dl
- mov rsi, gword ptr [r13+0x10]
- mov rdi, gword ptr [r13+0x08]
+ mov rsi, gword ptr [r12+0x10]
+ mov rdi, gword ptr [r12+0x08]
mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
- mov rdi, r13
+ jmp G_M16009_IG36
+ ;; size=45 bbWeight=0.50 PerfScore 9.25
+G_M16009_IG62:
+ cmp byte ptr [r12+0x7E], 0
+ jne SHORT G_M16009_IG63
+ mov rdi, qword ptr [r12+0x38]
+ cmp rdi, qword ptr [r12+0x40]
+ jbe SHORT G_M16009_IG64
+ add rdi, -2
+ mov qword ptr [r12+0x38], rdi
+ jmp SHORT G_M16009_IG64
+ ;; size=31 bbWeight=0.50 PerfScore 6.62
+G_M16009_IG63:
+ mov rdi, gword ptr [r12+0x18]
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x40]
+ call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
+ ;; size=15 bbWeight=0.50 PerfScore 4.50
+G_M16009_IG64:
+ mov rdx, qword ptr [r12+0x20]
+ cmp rdx, qword ptr [r12+0x28]
+ sete dl
+ movzx rdx, dl
+ mov rsi, gword ptr [r12+0x10]
+ mov rdi, gword ptr [r12+0x08]
+ mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
+ cmp dword ptr [rdi], edi
+ call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
+ jmp G_M16009_IG36
+ ;; size=45 bbWeight=0.50 PerfScore 9.25
+G_M16009_IG65:
+ cmp byte ptr [r12+0x7E], 0
+ jne SHORT G_M16009_IG66
+ mov r15, qword ptr [r12+0x38]
+ cmp r15, qword ptr [r12+0x40]
+ jbe SHORT G_M16009_IG67
+ lea rdi, [r15-0x02]
+ mov qword ptr [r12+0x38], rdi
+ jmp SHORT G_M16009_IG67
+ ;; size=31 bbWeight=0.50 PerfScore 6.75
+G_M16009_IG66:
+ mov rdi, gword ptr [r12+0x18]
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x40]
+ call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
+ ;; size=15 bbWeight=0.50 PerfScore 4.50
+G_M16009_IG67:
+ mov rdx, qword ptr [r12+0x20]
+ cmp rdx, qword ptr [r12+0x28]
+ sete dl
+ movzx rdx, dl
+ mov rsi, gword ptr [r12+0x10]
+ mov rdi, gword ptr [r12+0x08]
+ mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
+ cmp dword ptr [rdi], edi
+ call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
+ jmp G_M16009_IG36
+ ;; size=45 bbWeight=0.50 PerfScore 9.25
+G_M16009_IG68:
+ lea rax, [rdi+0x01]
+ mov qword ptr [r12+0x20], rax
+ mov byte ptr [rdi], 15
+ ;; size=12 bbWeight=0.50 PerfScore 1.25
+G_M16009_IG69:
+ inc dword ptr [r12+0x50]
+ mov r15d, 11
+ jmp SHORT G_M16009_IG72
+ ;; size=13 bbWeight=0.50 PerfScore 2.62
+G_M16009_IG70:
+ mov rdi, qword ptr [r12+0x38]
+ cmp rdi, qword ptr [r12+0x40]
+ jbe SHORT G_M16009_IG71
+ add rdi, -2
+ mov qword ptr [r12+0x38], rdi
+ ;; size=21 bbWeight=0.50 PerfScore 3.62
+G_M16009_IG71:
+ mov rdx, qword ptr [r12+0x20]
+ cmp rdx, qword ptr [r12+0x28]
+ sete dl
+ movzx rdx, dl
+ mov rsi, gword ptr [r12+0x10]
+ mov rdi, gword ptr [r12+0x08]
+ mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
+ cmp dword ptr [rdi], edi
+ call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
+ mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Text.EncodingByteBuffer:GetNextChar():ushort:this
call [rax]System.Text.EncodingByteBuffer:GetNextChar():ushort:this
- ;; size=51 bbWeight=0.50 PerfScore 10.00
-G_M16009_IG62:
+ ;; size=55 bbWeight=0.50 PerfScore 10.00
+G_M16009_IG72:
test r14, r14
- je SHORT G_M16009_IG67
+ je SHORT G_M16009_IG77
;; size=5 bbWeight=1 PerfScore 1.25
-G_M16009_IG63:
+G_M16009_IG73:
test rbx, rbx
- je SHORT G_M16009_IG67
- cmp byte ptr [r13+0x7D], 0
- jne SHORT G_M16009_IG64
+ je SHORT G_M16009_IG77
+ cmp byte ptr [r12+0x7D], 0
+ jne SHORT G_M16009_IG74
mov word ptr [rbx+0x34], 0
- ;; size=18 bbWeight=0.50 PerfScore 3.12
-G_M16009_IG64:
- mov dword ptr [rbx+0x38], r12d
+ ;; size=19 bbWeight=0.50 PerfScore 3.12
+G_M16009_IG74:
+ mov dword ptr [rbx+0x38], r15d
cmp byte ptr [rbx+0x36], 0
- je SHORT G_M16009_IG65
+ je SHORT G_M16009_IG75
cmp word ptr [rbx+0x34], 0
- jne SHORT G_M16009_IG65
+ jne SHORT G_M16009_IG75
mov dword ptr [rbx+0x3C], 11
- jmp SHORT G_M16009_IG66
+ jmp SHORT G_M16009_IG76
;; size=26 bbWeight=0.50 PerfScore 6.00
-G_M16009_IG65:
- mov r15d, dword ptr [rbp-0x30]
+G_M16009_IG75:
+ mov r15d, dword ptr [rbp-0x34]
mov dword ptr [rbx+0x3C], r15d
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M16009_IG66:
- mov rdi, r13
+G_M16009_IG76:
+ mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Text.EncodingByteBuffer:get_CharsUsed():int:this
call [rax]System.Text.EncodingByteBuffer:get_CharsUsed():int:this
mov dword ptr [rbx+0x30], eax
;; size=18 bbWeight=0.50 PerfScore 2.25
-G_M16009_IG67:
- mov eax, dword ptr [r13+0x50]
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M16009_IG68:
- add rsp, 40
+G_M16009_IG77:
+ mov eax, dword ptr [r12+0x50]
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M16009_IG78:
+ add rsp, 56
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 1724, prolog size 19, PerfScore 834.88, instruction count 472, allocated bytes for code 1724 (MethodHash=3c3bc176) for method System.Text.ISO2022Encoding:GetBytesCP50225KR(ulong,int,ulong,int,System.Text.ISO2022Encoding+ISO2022Encoder):int:this (FullOpts)
+; Total bytes of code 1888, prolog size 19, PerfScore 865.12, instruction count 502, allocated bytes for code 1888 (MethodHash=3c3bc176) for method System.Text.ISO2022Encoding:GetBytesCP50225KR(ulong,int,ulong,int,System.Text.ISO2022Encoding+ISO2022Encoder):int: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/14586e7f36505142869fbbbf3044577c |
Top method improvements-241 (-13.11 % of base) - Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(byref):Microsoft.Extensions.DependencyModel.CompilationOptions ; Assembly listing for method Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(byref):Microsoft.Extensions.DependencyModel.CompilationOptions (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; 25 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 28,101 ) byref -> rbx single-def
; V01 loc0 [V01,T25] ( 3, 4 ) ref -> r15 class-hnd <System.Collections.Generic.IEnumerable`1[System.String]>
; V02 loc1 [V02,T26] ( 3, 4 ) ref -> r14 class-hnd <System.String>
; V03 loc2 [V03,T27] ( 3, 4 ) ref -> r13 class-hnd <System.String>
-; V04 loc3 [V04 ] ( 5, 6 ) struct ( 8) [rbp-0x30] do-not-enreg[SB] must-init ld-addr-op <System.Nullable`1[ubyte]>
-; V05 loc4 [V05 ] ( 5, 6 ) struct ( 8) [rbp-0x38] do-not-enreg[SB] must-init ld-addr-op <System.Nullable`1[ubyte]>
-; V06 loc5 [V06 ] ( 5, 6 ) struct ( 8) [rbp-0x40] do-not-enreg[SB] must-init ld-addr-op <System.Nullable`1[ubyte]>
+; V04 loc3 [V04 ] ( 4, 5 ) struct ( 8) [rbp-0x30] do-not-enreg[SB] must-init ld-addr-op <System.Nullable`1[ubyte]>
+; V05 loc4 [V05 ] ( 4, 5 ) struct ( 8) [rbp-0x38] do-not-enreg[SB] must-init ld-addr-op <System.Nullable`1[ubyte]>
+; V06 loc5 [V06 ] ( 4, 5 ) struct ( 8) [rbp-0x40] do-not-enreg[SB] must-init ld-addr-op <System.Nullable`1[ubyte]>
; V07 loc6 [V07,T28] ( 3, 4 ) ref -> r12 class-hnd <System.String>
-; V08 loc7 [V08 ] ( 5, 6 ) struct ( 8) [rbp-0x48] do-not-enreg[SB] must-init ld-addr-op <System.Nullable`1[ubyte]>
-; V09 loc8 [V09 ] ( 5, 6 ) struct ( 8) [rbp-0x50] do-not-enreg[SB] must-init ld-addr-op <System.Nullable`1[ubyte]>
-; V10 loc9 [V10,T29] ( 3, 4 ) ref -> [rbp-0xA8] class-hnd <System.String>
-; V11 loc10 [V11 ] ( 5, 6 ) struct ( 8) [rbp-0x58] do-not-enreg[SB] must-init ld-addr-op <System.Nullable`1[ubyte]>
-; V12 loc11 [V12 ] ( 5, 6 ) struct ( 8) [rbp-0x60] do-not-enreg[SB] must-init ld-addr-op <System.Nullable`1[ubyte]>
+; V08 loc7 [V08 ] ( 4, 5 ) struct ( 8) [rbp-0x48] do-not-enreg[SB] must-init ld-addr-op <System.Nullable`1[ubyte]>
+; V09 loc8 [V09 ] ( 4, 5 ) struct ( 8) [rbp-0x50] do-not-enreg[SB] must-init ld-addr-op <System.Nullable`1[ubyte]>
+; V10 loc9 [V10,T29] ( 3, 4 ) ref -> [rbp-0x70] class-hnd <System.String>
+; V11 loc10 [V11 ] ( 4, 5 ) struct ( 8) [rbp-0x58] do-not-enreg[SB] must-init ld-addr-op <System.Nullable`1[ubyte]>
+; V12 loc11 [V12 ] ( 4, 5 ) struct ( 8) [rbp-0x60] do-not-enreg[SB] must-init ld-addr-op <System.Nullable`1[ubyte]>
; V13 loc12 [V13,T02] ( 27, 45 ) ref -> rax class-hnd exact <System.String>
;* V14 loc13 [V14 ] ( 0, 0 ) int -> zero-ref
; V15 loc14 [V15,T07] ( 9, 18 ) ushort -> rdx
;# V16 OutArgs [V16 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V17 tmp1 [V17,T19] ( 6, 6 ) ref -> r15
-; V18 tmp2 [V18,T03] ( 21, 42 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Microsoft.Extensions.DependencyModel.CompilationOptions>
+; V18 tmp2 [V18,T05] ( 14, 28 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Microsoft.Extensions.DependencyModel.CompilationOptions>
;* V19 tmp3 [V19 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
;* V20 tmp4 [V20 ] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V21 tmp5 [V21 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
;* V22 tmp6 [V22 ] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V23 tmp7 [V23 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
; V24 tmp8 [V24,T10] ( 2, 8 ) int -> rdi "spilling unroll qmark"
;* V25 tmp9 [V25 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
; V26 tmp10 [V26,T11] ( 2, 8 ) int -> rdi "spilling unroll qmark"
;* V27 tmp11 [V27 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
; V28 tmp12 [V28,T12] ( 2, 8 ) int -> rdi "spilling unroll qmark"
;* V29 tmp13 [V29 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
; V30 tmp14 [V30,T13] ( 2, 8 ) int -> rdi "spilling unroll qmark"
;* V31 tmp15 [V31 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
; V32 tmp16 [V32,T14] ( 2, 8 ) int -> rdi "spilling unroll qmark"
;* V33 tmp17 [V33 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
; V34 tmp18 [V34,T15] ( 2, 8 ) int -> rdi "spilling unroll qmark"
;* V35 tmp19 [V35 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
; V36 tmp20 [V36,T16] ( 2, 8 ) int -> rdi "spilling unroll qmark"
;* V37 tmp21 [V37 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
; V38 tmp22 [V38,T17] ( 2, 8 ) int -> rdi "spilling unroll qmark"
;* V39 tmp23 [V39 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
; V40 tmp24 [V40,T18] ( 2, 8 ) int -> rdi "spilling unroll qmark"
;* V41 tmp25 [V41 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
;* V42 tmp26 [V42 ] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V43 tmp27 [V43,T20] ( 3, 6 ) ubyte -> rax "Inline stloc first use temp"
;* V44 tmp28 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V45 tmp29 [V45,T08] ( 2, 18 ) int -> [rbp-0x64] spill-single-def "Inline stloc first use temp"
;* V46 tmp30 [V46 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
; V47 tmp31 [V47,T21] ( 3, 6 ) int -> rcx "Inline stloc first use temp"
; V48 tmp32 [V48,T22] ( 3, 6 ) ubyte -> rdi "Inline stloc first use temp"
;* V49 tmp33 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V50 tmp34 [V50 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <System.Text.Json.BitStack>
; V51 tmp35 [V51,T01] ( 4, 48 ) int -> rax "Inline stloc first use temp"
-; V52 tmp36 [V52,T04] ( 3, 40 ) ubyte -> rcx "Inline stloc first use temp"
+; V52 tmp36 [V52,T03] ( 3, 40 ) ubyte -> rcx "Inline stloc first use temp"
;* V53 tmp37 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V54 tmp38 [V54 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Nullable`1[ubyte]>
;* V55 tmp39 [V55 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Nullable`1[ubyte]>
;* V56 tmp40 [V56 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Nullable`1[ubyte]>
;* V57 tmp41 [V57 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Nullable`1[ubyte]>
;* V58 tmp42 [V58 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Nullable`1[ubyte]>
;* V59 tmp43 [V59 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Nullable`1[ubyte]>
;* V60 tmp44 [V60 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Nullable`1[ubyte]>
; V61 tmp45 [V61,T30] ( 3, 4 ) ubyte -> [rbp-0x30] do-not-enreg[] single-def "field V04.hasValue (fldOffset=0x0)" P-DEP
; V62 tmp46 [V62,T31] ( 3, 4 ) ubyte -> [rbp-0x2F] do-not-enreg[] single-def "field V04.value (fldOffset=0x1)" P-DEP
; V63 tmp47 [V63,T32] ( 3, 4 ) ubyte -> [rbp-0x38] do-not-enreg[] single-def "field V05.hasValue (fldOffset=0x0)" P-DEP
; V64 tmp48 [V64,T33] ( 3, 4 ) ubyte -> [rbp-0x37] do-not-enreg[] single-def "field V05.value (fldOffset=0x1)" P-DEP
; V65 tmp49 [V65,T34] ( 3, 4 ) ubyte -> [rbp-0x40] do-not-enreg[] single-def "field V06.hasValue (fldOffset=0x0)" P-DEP
; V66 tmp50 [V66,T35] ( 3, 4 ) ubyte -> [rbp-0x3F] do-not-enreg[] single-def "field V06.value (fldOffset=0x1)" P-DEP
; V67 tmp51 [V67,T36] ( 3, 4 ) ubyte -> [rbp-0x48] do-not-enreg[] single-def "field V08.hasValue (fldOffset=0x0)" P-DEP
; V68 tmp52 [V68,T37] ( 3, 4 ) ubyte -> [rbp-0x47] do-not-enreg[] single-def "field V08.value (fldOffset=0x1)" P-DEP
; V69 tmp53 [V69,T38] ( 3, 4 ) ubyte -> [rbp-0x50] do-not-enreg[] single-def "field V09.hasValue (fldOffset=0x0)" P-DEP
; V70 tmp54 [V70,T39] ( 3, 4 ) ubyte -> [rbp-0x4F] do-not-enreg[] single-def "field V09.value (fldOffset=0x1)" P-DEP
; V71 tmp55 [V71,T40] ( 3, 4 ) ubyte -> [rbp-0x58] do-not-enreg[] single-def "field V11.hasValue (fldOffset=0x0)" P-DEP
; V72 tmp56 [V72,T41] ( 3, 4 ) ubyte -> [rbp-0x57] do-not-enreg[] single-def "field V11.value (fldOffset=0x1)" P-DEP
; V73 tmp57 [V73,T42] ( 3, 4 ) ubyte -> [rbp-0x60] do-not-enreg[] single-def "field V12.hasValue (fldOffset=0x0)" P-DEP
; V74 tmp58 [V74,T43] ( 3, 4 ) ubyte -> [rbp-0x5F] do-not-enreg[] single-def "field V12.value (fldOffset=0x1)" P-DEP
;* V75 tmp59 [V75 ] ( 0, 0 ) ref -> zero-ref "field V46._array (fldOffset=0x0)" P-INDEP
;* V76 tmp60 [V76 ] ( 0, 0 ) long -> zero-ref "field V46._allocationFreeContainer (fldOffset=0x8)" P-INDEP
; V77 tmp61 [V77,T23] ( 3, 6 ) int -> rax "field V46._currentDepth (fldOffset=0x10)" P-INDEP
;* V78 tmp62 [V78 ] ( 0, 0 ) ref -> zero-ref "field V50._array (fldOffset=0x0)" P-INDEP
;* V79 tmp63 [V79 ] ( 0, 0 ) long -> zero-ref "field V50._allocationFreeContainer (fldOffset=0x8)" P-INDEP
-; V80 tmp64 [V80,T05] ( 2, 32 ) int -> rax "field V50._currentDepth (fldOffset=0x10)" P-INDEP
-; V81 tmp65 [V81,T44] ( 2, 2 ) ubyte -> [rbp-0x68] spill-single-def "field V54.hasValue (fldOffset=0x0)" P-INDEP
-; V82 tmp66 [V82,T45] ( 2, 2 ) ubyte -> [rbp-0x6C] spill-single-def "field V54.value (fldOffset=0x1)" P-INDEP
-; V83 tmp67 [V83,T46] ( 2, 2 ) ubyte -> [rbp-0x70] spill-single-def "field V55.hasValue (fldOffset=0x0)" P-INDEP
-; V84 tmp68 [V84,T47] ( 2, 2 ) ubyte -> [rbp-0x74] spill-single-def "field V55.value (fldOffset=0x1)" P-INDEP
-; V85 tmp69 [V85,T48] ( 2, 2 ) ubyte -> [rbp-0x78] spill-single-def "field V56.hasValue (fldOffset=0x0)" P-INDEP
-; V86 tmp70 [V86,T49] ( 2, 2 ) ubyte -> [rbp-0x7C] spill-single-def "field V56.value (fldOffset=0x1)" P-INDEP
-; V87 tmp71 [V87,T50] ( 2, 2 ) ubyte -> [rbp-0x80] spill-single-def "field V57.hasValue (fldOffset=0x0)" P-INDEP
-; V88 tmp72 [V88,T51] ( 2, 2 ) ubyte -> [rbp-0x84] spill-single-def "field V57.value (fldOffset=0x1)" P-INDEP
-; V89 tmp73 [V89,T52] ( 2, 2 ) ubyte -> [rbp-0x88] spill-single-def "field V58.hasValue (fldOffset=0x0)" P-INDEP
-; V90 tmp74 [V90,T53] ( 2, 2 ) ubyte -> [rbp-0x8C] spill-single-def "field V58.value (fldOffset=0x1)" P-INDEP
-; V91 tmp75 [V91,T54] ( 2, 2 ) ubyte -> [rbp-0x90] spill-single-def "field V59.hasValue (fldOffset=0x0)" P-INDEP
-; V92 tmp76 [V92,T55] ( 2, 2 ) ubyte -> [rbp-0x94] spill-single-def "field V59.value (fldOffset=0x1)" P-INDEP
-; V93 tmp77 [V93,T56] ( 2, 2 ) ubyte -> [rbp-0x98] spill-single-def "field V60.hasValue (fldOffset=0x0)" P-INDEP
-; V94 tmp78 [V94,T57] ( 2, 2 ) ubyte -> [rbp-0x9C] spill-single-def "field V60.value (fldOffset=0x1)" P-INDEP
+; V80 tmp64 [V80,T04] ( 2, 32 ) int -> rax "field V50._currentDepth (fldOffset=0x10)" P-INDEP
+;* V81 tmp65 [V81 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V54.hasValue (fldOffset=0x0)" P-INDEP
+;* V82 tmp66 [V82 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V54.value (fldOffset=0x1)" P-INDEP
+;* V83 tmp67 [V83 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V55.hasValue (fldOffset=0x0)" P-INDEP
+;* V84 tmp68 [V84 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V55.value (fldOffset=0x1)" P-INDEP
+;* V85 tmp69 [V85 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V56.hasValue (fldOffset=0x0)" P-INDEP
+;* V86 tmp70 [V86 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V56.value (fldOffset=0x1)" P-INDEP
+;* V87 tmp71 [V87 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V57.hasValue (fldOffset=0x0)" P-INDEP
+;* V88 tmp72 [V88 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V57.value (fldOffset=0x1)" P-INDEP
+;* V89 tmp73 [V89 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V58.hasValue (fldOffset=0x0)" P-INDEP
+;* V90 tmp74 [V90 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V58.value (fldOffset=0x1)" P-INDEP
+;* V91 tmp75 [V91 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V59.hasValue (fldOffset=0x0)" P-INDEP
+;* V92 tmp76 [V92 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V59.value (fldOffset=0x1)" P-INDEP
+;* V93 tmp77 [V93 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V60.hasValue (fldOffset=0x0)" P-INDEP
+;* V94 tmp78 [V94 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V60.value (fldOffset=0x1)" P-INDEP
; V95 cse0 [V95,T24] ( 3, 6 ) int -> rdi "CSE #08: moderate"
; V96 cse1 [V96,T06] ( 17, 22 ) int -> rcx "CSE #01: aggressive"
; V97 rat0 [V97,T09] ( 3, 11.67) int -> rdi "ReplaceWithLclVar is creating a new local variable"
-; V98 rat1 [V98,T58] ( 3, 12 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
-; V99 rat2 [V99,T59] ( 3, 12 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
-; V100 rat3 [V100,T60] ( 3, 12 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
-; V101 rat4 [V101,T61] ( 3, 12 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
-; V102 rat5 [V102,T62] ( 3, 12 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
-; V103 rat6 [V103,T63] ( 3, 12 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
-; V104 rat7 [V104,T64] ( 3, 12 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
-; V105 rat8 [V105,T65] ( 3, 12 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
-; V106 rat9 [V106,T66] ( 3, 12 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V98 rat1 [V98,T44] ( 3, 12 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V99 rat2 [V99,T45] ( 3, 12 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V100 rat3 [V100,T46] ( 3, 12 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V101 rat4 [V101,T47] ( 3, 12 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V102 rat5 [V102,T48] ( 3, 12 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V103 rat6 [V103,T49] ( 3, 12 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V104 rat7 [V104,T50] ( 3, 12 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V105 rat8 [V105,T51] ( 3, 12 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V106 rat9 [V106,T52] ( 3, 12 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 136
+; Lcl frame size = 72
G_M47278_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 136
- lea rbp, [rsp+0xB0]
+ sub rsp, 72
+ lea rbp, [rsp+0x70]
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x60], ymm8
vmovdqa xmmword ptr [rbp-0x40], xmm8
xor eax, eax
mov qword ptr [rbp-0x30], rax
mov rbx, rdi
- ;; size=49 bbWeight=1 PerfScore 12.58
+ ;; size=43 bbWeight=1 PerfScore 12.58
G_M47278_IG02:
xor r15, r15
xor r14, r14
xor r13, r13
mov byte ptr [rbp-0x30], 0
mov byte ptr [rbp-0x2F], 0
mov byte ptr [rbp-0x38], 0
mov byte ptr [rbp-0x37], 0
mov byte ptr [rbp-0x40], 0
mov byte ptr [rbp-0x3F], 0
xor r12, r12
mov byte ptr [rbp-0x48], 0
mov byte ptr [rbp-0x47], 0
mov byte ptr [rbp-0x50], 0
mov byte ptr [rbp-0x4F], 0
xor rax, rax
- mov gword ptr [rbp-0xA8], rax
+ mov gword ptr [rbp-0x70], rax
mov byte ptr [rbp-0x58], 0
mov byte ptr [rbp-0x57], 0
mov byte ptr [rbp-0x60], 0
mov byte ptr [rbp-0x5F], 0
mov rdi, rbx
mov rcx, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:Read():ubyte:this
call [rcx]System.Text.Json.Utf8JsonReader:Read():ubyte:this
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:CheckStartObject(byref)
call [rax]Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:CheckStartObject(byref)
jmp G_M47278_IG17
- ;; size=112 bbWeight=1 PerfScore 25.25
+ ;; size=109 bbWeight=1 PerfScore 25.25
G_M47278_IG03:
cmp ecx, 16
jne SHORT G_M47278_IG08
;; size=5 bbWeight=1 PerfScore 1.25
G_M47278_IG04:
vmovups ymm0, ymmword ptr [rax+0x0C]
vpxor ymm0, ymm0, ymmword ptr [reloc @RWD00]
vptest ymm0, ymm0
sete dil
movzx rdi, dil
test edi, edi
je SHORT G_M47278_IG08
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsNullableBoolean(byref):System.Nullable`1[ubyte]
call [rax]Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsNullableBoolean(byref):System.Nullable`1[ubyte]
mov word ptr [rbp-0x38], ax
jmp G_M47278_IG17
;; size=54 bbWeight=2 PerfScore 42.00
G_M47278_IG05:
cmp byte ptr [rbx+0x28], 5
jne G_M47278_IG18
;; size=10 bbWeight=4 PerfScore 16.00
G_M47278_IG06:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:GetString():System.String:this
call [rax]System.Text.Json.Utf8JsonReader:GetString():System.String:this
test rax, rax
je SHORT G_M47278_IG08
mov ecx, dword ptr [rax+0x08]
lea edi, [rcx-0x06]
cmp edi, 10
ja SHORT G_M47278_IG08
;; size=31 bbWeight=2 PerfScore 17.00
G_M47278_IG07:
mov edi, edi
lea rdx, [reloc @RWD32]
mov edx, dword ptr [rdx+4*rdi]
lea rsi, G_M47278_IG02
add rdx, rsi
jmp rdx
;; size=24 bbWeight=1.83 PerfScore 11.00
G_M47278_IG08:
cmp byte ptr [rbx+0x24], 0
- je G_M47278_IG52
+ je G_M47278_IG51
cmp byte ptr [rbx+0x28], 5
jne SHORT G_M47278_IG09
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:Read():ubyte:this
call [rax]System.Text.Json.Utf8JsonReader:Read():ubyte:this
;; size=31 bbWeight=2 PerfScore 23.00
G_M47278_IG09:
movzx rdi, byte ptr [rbx+0x28]
mov eax, edi
cmp eax, 1
je SHORT G_M47278_IG10
cmp eax, 3
jne SHORT G_M47278_IG17
;; size=17 bbWeight=2 PerfScore 9.50
G_M47278_IG10:
mov eax, dword ptr [rbx+0x58]
mov ecx, eax
cmp edi, 1
je SHORT G_M47278_IG11
cmp edi, 3
jne SHORT G_M47278_IG12
;; size=15 bbWeight=2 PerfScore 9.50
G_M47278_IG11:
lea ecx, [rax-0x01]
;; size=3 bbWeight=2 PerfScore 1.00
G_M47278_IG12:
mov dword ptr [rbp-0x64], ecx
;; size=3 bbWeight=2 PerfScore 2.00
G_M47278_IG13:
mov rdi, rbx
mov rcx, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:Read():ubyte:this
call [rcx]System.Text.Json.Utf8JsonReader:Read():ubyte:this
mov eax, dword ptr [rbx+0x58]
movzx rcx, byte ptr [rbx+0x28]
cmp ecx, 1
je SHORT G_M47278_IG15
;; size=27 bbWeight=16 PerfScore 140.00
G_M47278_IG14:
cmp ecx, 3
jne SHORT G_M47278_IG16
;; size=5 bbWeight=8 PerfScore 10.00
G_M47278_IG15:
dec eax
;; size=2 bbWeight=8 PerfScore 2.00
G_M47278_IG16:
mov ecx, dword ptr [rbp-0x64]
cmp ecx, eax
jl SHORT G_M47278_IG13
;; size=7 bbWeight=16 PerfScore 36.00
G_M47278_IG17:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.Json.Utf8JsonReader:Read():ubyte:this
call [rax]System.Text.Json.Utf8JsonReader:Read():ubyte:this
test eax, eax
jne G_M47278_IG05
;; size=23 bbWeight=8 PerfScore 38.00
G_M47278_IG18:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:CheckEndObject(byref)
call [rax]Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:CheckEndObject(byref)
mov rdi, 0xD1FFAB1E ; const ptr
test r15, r15
cmove r15, gword ptr [rdi]
mov rdi, 0xD1FFAB1E ; Microsoft.Extensions.DependencyModel.CompilationOptions
call CORINFO_HELP_NEWSFAST
mov rbx, rax
- movzx rax, byte ptr [rbp-0x30]
- mov byte ptr [rbp-0x68], al
- movzx rcx, byte ptr [rbp-0x2F]
- mov byte ptr [rbp-0x6C], cl
- movzx rdx, byte ptr [rbp-0x38]
- mov byte ptr [rbp-0x70], dl
- movzx r8, byte ptr [rbp-0x37]
- mov byte ptr [rbp-0x74], r8b
- movzx r9, byte ptr [rbp-0x40]
- mov byte ptr [rbp-0x78], r9b
- movzx r10, byte ptr [rbp-0x3F]
- mov byte ptr [rbp-0x7C], r10b
- movzx r11, byte ptr [rbp-0x48]
- mov byte ptr [rbp-0x80], r11b
- movzx rdi, byte ptr [rbp-0x47]
- mov byte ptr [rbp-0x84], dil
- movzx rsi, byte ptr [rbp-0x50]
- mov byte ptr [rbp-0x88], sil
- movzx rax, byte ptr [rbp-0x4F]
- mov byte ptr [rbp-0x8C], al
- movzx rax, byte ptr [rbp-0x58]
- mov byte ptr [rbp-0x90], al
- movzx rax, byte ptr [rbp-0x57]
- mov byte ptr [rbp-0x94], al
- movzx rax, byte ptr [rbp-0x60]
- mov byte ptr [rbp-0x98], al
- movzx rax, byte ptr [rbp-0x5F]
- mov byte ptr [rbp-0x9C], al
test r15, r15
- je G_M47278_IG53
+ je G_M47278_IG52
mov rsi, r15
mov rdi, 0xD1FFAB1E ; System.Linq.Enumerable:ToArray[System.String](System.Collections.Generic.IEnumerable`1[System.String]):System.String[]
- mov r15, 0xD1FFAB1E ; code for System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[]
- call [r15]System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[]
+ mov rax, 0xD1FFAB1E ; code for System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[]
+ call [rax]System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[]
lea rdi, bword ptr [rbx+0x08]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [rbx+0x10]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [rbx+0x18]
- ;; size=244 bbWeight=1 PerfScore 45.50
-G_M47278_IG19:
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
- movzx r15, byte ptr [rbp-0x68]
- mov byte ptr [rbx+0x30], r15b
- movzx r15, byte ptr [rbp-0x6C]
- mov byte ptr [rbx+0x31], r15b
- movzx r15, byte ptr [rbp-0x70]
- mov byte ptr [rbx+0x32], r15b
- movzx r15, byte ptr [rbp-0x74]
- mov byte ptr [rbx+0x33], r15b
- movzx r15, byte ptr [rbp-0x78]
- mov byte ptr [rbx+0x34], r15b
- movzx r15, byte ptr [rbp-0x7C]
- mov byte ptr [rbx+0x35], r15b
+ movzx rdi, word ptr [rbp-0x30]
+ mov word ptr [rbx+0x30], di
+ movzx rdi, word ptr [rbp-0x38]
+ mov word ptr [rbx+0x32], di
+ movzx rdi, word ptr [rbp-0x40]
+ mov word ptr [rbx+0x34], di
lea rdi, bword ptr [rbx+0x20]
mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
- movzx r15, byte ptr [rbp-0x80]
- mov byte ptr [rbx+0x36], r15b
- movzx r15, byte ptr [rbp-0x84]
- mov byte ptr [rbx+0x37], r15b
- movzx r15, byte ptr [rbp-0x88]
- mov byte ptr [rbx+0x38], r15b
- movzx r15, byte ptr [rbp-0x8C]
- mov byte ptr [rbx+0x39], r15b
+ movzx rdi, word ptr [rbp-0x48]
+ mov word ptr [rbx+0x36], di
+ movzx rdi, word ptr [rbp-0x50]
+ mov word ptr [rbx+0x38], di
lea rdi, bword ptr [rbx+0x28]
- mov rsi, gword ptr [rbp-0xA8]
+ mov rsi, gword ptr [rbp-0x70]
call CORINFO_HELP_ASSIGN_REF
- movzx r15, byte ptr [rbp-0x90]
- mov byte ptr [rbx+0x3A], r15b
- movzx r15, byte ptr [rbp-0x94]
- mov byte ptr [rbx+0x3B], r15b
- movzx r15, byte ptr [rbp-0x98]
- mov byte ptr [rbx+0x3C], r15b
- movzx r15, byte ptr [rbp-0x9C]
- mov byte ptr [rbx+0x3D], r15b
+ movzx rax, word ptr [rbp-0x58]
+ mov word ptr [rbx+0x3A], ax
+ movzx rax, word ptr [rbp-0x60]
+ mov word ptr [rbx+0x3C], ax
mov rax, rbx
- ;; size=186 bbWeight=1 PerfScore 33.75
-G_M47278_IG20:
+ ;; size=204 bbWeight=1 PerfScore 37.25
+G_M47278_IG19:
vzeroupper
- add rsp, 136
+ add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=21 bbWeight=1 PerfScore 5.25
-G_M47278_IG21:
+ ;; size=18 bbWeight=1 PerfScore 5.25
+G_M47278_IG20:
cmp ecx, 15
jne G_M47278_IG08
;; size=9 bbWeight=1 PerfScore 1.25
-G_M47278_IG22:
+G_M47278_IG21:
vmovups xmm0, xmmword ptr [rax+0x0C]
vmovups xmm1, xmmword ptr [rax+0x1A]
vpxor xmm1, xmm1, xmmword ptr [reloc @RWD80]
vpternlogq xmm0, xmm1, xmmword ptr [reloc @RWD96], -34
vptest xmm0, xmm0
sete dil
movzx rdi, dil
test edi, edi
je G_M47278_IG08
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsString(byref):System.String
call [rax]Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsString(byref):System.String
mov r14, rax
jmp G_M47278_IG17
;; size=73 bbWeight=2 PerfScore 46.50
-G_M47278_IG23:
+G_M47278_IG22:
cmp ecx, 14
jne G_M47278_IG08
;; size=9 bbWeight=1 PerfScore 1.25
-G_M47278_IG24:
+G_M47278_IG23:
vmovups xmm0, xmmword ptr [rax+0x0C]
vmovups xmm1, xmmword ptr [rax+0x18]
vpxor xmm1, xmm1, xmmword ptr [reloc @RWD112]
vpternlogq xmm0, xmm1, xmmword ptr [reloc @RWD128], -34
vptest xmm0, xmm0
sete dil
movzx rdi, dil
test edi, edi
je G_M47278_IG08
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsNullableBoolean(byref):System.Nullable`1[ubyte]
call [rax]Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsNullableBoolean(byref):System.Nullable`1[ubyte]
mov word ptr [rbp-0x58], ax
jmp G_M47278_IG17
;; size=74 bbWeight=2 PerfScore 48.00
-G_M47278_IG25:
+G_M47278_IG24:
cmp ecx, 11
jne G_M47278_IG08
;; size=9 bbWeight=1 PerfScore 1.25
-G_M47278_IG26:
+G_M47278_IG25:
vmovups xmm0, xmmword ptr [rax+0x0C]
vmovups xmm1, xmmword ptr [rax+0x12]
vpxor xmm1, xmm1, xmmword ptr [reloc @RWD144]
vpternlogq xmm0, xmm1, xmmword ptr [reloc @RWD160], -34
vptest xmm0, xmm0
sete dil
movzx rdi, dil
test edi, edi
je G_M47278_IG08
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsNullableBoolean(byref):System.Nullable`1[ubyte]
call [rax]Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsNullableBoolean(byref):System.Nullable`1[ubyte]
mov word ptr [rbp-0x30], ax
jmp G_M47278_IG17
;; size=74 bbWeight=2 PerfScore 48.00
-G_M47278_IG27:
+G_M47278_IG26:
cmp ecx, 10
jne G_M47278_IG08
;; size=9 bbWeight=1 PerfScore 1.25
-G_M47278_IG28:
+G_M47278_IG27:
vmovups xmm0, xmmword ptr [rax+0x0C]
vmovups xmm1, xmmword ptr [rax+0x10]
vpxor xmm1, xmm1, xmmword ptr [reloc @RWD176]
vpternlogq xmm0, xmm1, xmmword ptr [reloc @RWD192], -34
vptest xmm0, xmm0
sete dil
movzx rdi, dil
test edi, edi
je G_M47278_IG08
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsNullableBoolean(byref):System.Nullable`1[ubyte]
call [rax]Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsNullableBoolean(byref):System.Nullable`1[ubyte]
mov word ptr [rbp-0x50], ax
jmp G_M47278_IG17
;; size=74 bbWeight=2 PerfScore 48.00
-G_M47278_IG29:
+G_M47278_IG28:
cmp ecx, 2
- jbe G_M47278_IG54
+ jbe G_M47278_IG53
movzx rdx, word ptr [rax+0x10]
cmp edx, 98
- jne SHORT G_M47278_IG32
+ jne SHORT G_M47278_IG31
;; size=18 bbWeight=2 PerfScore 9.00
-G_M47278_IG30:
+G_M47278_IG29:
cmp ecx, 9
jne G_M47278_IG08
;; size=9 bbWeight=1 PerfScore 1.25
-G_M47278_IG31:
+G_M47278_IG30:
vmovups xmm0, xmmword ptr [rax+0x0C]
vmovups xmm1, xmmword ptr [rax+0x0E]
vpxor xmm1, xmm1, xmmword ptr [reloc @RWD208]
vpternlogq xmm0, xmm1, xmmword ptr [reloc @RWD224], -34
vptest xmm0, xmm0
sete dil
movzx rdi, dil
test edi, edi
je G_M47278_IG08
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsString(byref):System.String
call [rax]Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsString(byref):System.String
- mov gword ptr [rbp-0xA8], rax
+ mov gword ptr [rbp-0x70], rax
jmp G_M47278_IG17
- ;; size=77 bbWeight=2 PerfScore 48.00
-G_M47278_IG32:
+ ;; size=74 bbWeight=2 PerfScore 48.00
+G_M47278_IG31:
cmp edx, 108
jne G_M47278_IG08
;; size=9 bbWeight=2 PerfScore 2.50
-G_M47278_IG33:
+G_M47278_IG32:
cmp ecx, 9
jne G_M47278_IG08
;; size=9 bbWeight=1 PerfScore 1.25
-G_M47278_IG34:
+G_M47278_IG33:
vmovups xmm0, xmmword ptr [rax+0x0C]
vmovups xmm1, xmmword ptr [rax+0x0E]
vpxor xmm1, xmm1, xmmword ptr [reloc @RWD240]
vpternlogq xmm0, xmm1, xmmword ptr [reloc @RWD256], -34
vptest xmm0, xmm0
sete dil
movzx rdi, dil
test edi, edi
je G_M47278_IG08
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsNullableBoolean(byref):System.Nullable`1[ubyte]
call [rax]Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsNullableBoolean(byref):System.Nullable`1[ubyte]
mov word ptr [rbp-0x48], ax
jmp G_M47278_IG17
;; size=74 bbWeight=2 PerfScore 48.00
-G_M47278_IG35:
+G_M47278_IG34:
test ecx, ecx
- je G_M47278_IG54
+ je G_M47278_IG53
movzx rdx, word ptr [rax+0x0C]
cmp edx, 111
- jne SHORT G_M47278_IG38
+ jne SHORT G_M47278_IG37
;; size=17 bbWeight=2 PerfScore 9.00
-G_M47278_IG36:
+G_M47278_IG35:
cmp ecx, 8
jne G_M47278_IG08
;; size=9 bbWeight=1 PerfScore 1.25
-G_M47278_IG37:
+G_M47278_IG36:
vmovups xmm0, xmmword ptr [rax+0x0C]
vpxor xmm0, xmm0, xmmword ptr [reloc @RWD272]
vptest xmm0, xmm0
sete dil
movzx rdi, dil
test edi, edi
je G_M47278_IG08
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsNullableBoolean(byref):System.Nullable`1[ubyte]
call [rax]Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsNullableBoolean(byref):System.Nullable`1[ubyte]
mov word ptr [rbp-0x40], ax
jmp G_M47278_IG17
;; size=58 bbWeight=2 PerfScore 36.00
-G_M47278_IG38:
+G_M47278_IG37:
cmp edx, 112
jne G_M47278_IG08
;; size=9 bbWeight=2 PerfScore 2.50
-G_M47278_IG39:
+G_M47278_IG38:
cmp ecx, 8
jne G_M47278_IG08
;; size=9 bbWeight=1 PerfScore 1.25
-G_M47278_IG40:
+G_M47278_IG39:
vmovups xmm0, xmmword ptr [rax+0x0C]
vpxor xmm0, xmm0, xmmword ptr [reloc @RWD288]
vptest xmm0, xmm0
sete dil
movzx rdi, dil
test edi, edi
je G_M47278_IG08
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsString(byref):System.String
call [rax]Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsString(byref):System.String
mov r13, rax
jmp G_M47278_IG17
;; size=57 bbWeight=2 PerfScore 34.50
-G_M47278_IG41:
+G_M47278_IG40:
test ecx, ecx
- je G_M47278_IG54
+ je G_M47278_IG53
movzx rdx, word ptr [rax+0x0C]
cmp edx, 100
- jne SHORT G_M47278_IG45
+ jne SHORT G_M47278_IG44
;; size=17 bbWeight=2 PerfScore 9.00
-G_M47278_IG42:
+G_M47278_IG41:
cmp ecx, 7
jne G_M47278_IG08
;; size=9 bbWeight=1 PerfScore 1.25
-G_M47278_IG43:
+G_M47278_IG42:
mov rdi, 0xD1FFAB1E
xor rdi, qword ptr [rax+0x0C]
mov rcx, 0xD1FFAB1E
xor rcx, qword ptr [rax+0x12]
or rdi, rcx
jne G_M47278_IG08
;; size=37 bbWeight=0.50 PerfScore 3.88
-G_M47278_IG44:
+G_M47278_IG43:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadStringArray(byref):System.String[]
call [rax]Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadStringArray(byref):System.String[]
mov r15, rax
jmp G_M47278_IG17
;; size=23 bbWeight=2 PerfScore 11.50
-G_M47278_IG45:
+G_M47278_IG44:
cmp edx, 107
jne G_M47278_IG08
;; size=9 bbWeight=2 PerfScore 2.50
-G_M47278_IG46:
+G_M47278_IG45:
cmp ecx, 7
jne G_M47278_IG08
;; size=9 bbWeight=1 PerfScore 1.25
-G_M47278_IG47:
+G_M47278_IG46:
mov rdi, 0xD1FFAB1E
xor rdi, qword ptr [rax+0x0C]
mov rcx, 0xD1FFAB1E
xor rcx, qword ptr [rax+0x12]
or rdi, rcx
jne G_M47278_IG08
;; size=37 bbWeight=0.50 PerfScore 3.88
-G_M47278_IG48:
+G_M47278_IG47:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsString(byref):System.String
call [rax]Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsString(byref):System.String
mov r12, rax
jmp G_M47278_IG17
;; size=23 bbWeight=2 PerfScore 11.50
-G_M47278_IG49:
+G_M47278_IG48:
cmp ecx, 6
jne G_M47278_IG08
;; size=9 bbWeight=1 PerfScore 1.25
-G_M47278_IG50:
+G_M47278_IG49:
mov rdi, 0xD1FFAB1E
xor rdi, qword ptr [rax+0x0C]
mov eax, dword ptr [rax+0x14]
xor eax, 0xD1FFAB1E
or rdi, rax
jne G_M47278_IG08
;; size=31 bbWeight=0.50 PerfScore 3.38
-G_M47278_IG51:
+G_M47278_IG50:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsNullableBoolean(byref):System.Nullable`1[ubyte]
call [rax]Microsoft.Extensions.DependencyModel.Utf8JsonReaderExtensions:ReadAsNullableBoolean(byref):System.Nullable`1[ubyte]
mov word ptr [rbp-0x60], ax
jmp G_M47278_IG17
;; size=24 bbWeight=2 PerfScore 13.00
-G_M47278_IG52:
+G_M47278_IG51:
mov rax, 0xD1FFAB1E ; code for System.Text.Json.ThrowHelper:ThrowInvalidOperationException_CannotSkipOnPartial()
call [rax]System.Text.Json.ThrowHelper:ThrowInvalidOperationException_CannotSkipOnPartial()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M47278_IG53:
+G_M47278_IG52:
mov edi, 453
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:Throw(System.String)
call [rax]System.ThrowHelper:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-G_M47278_IG54:
+G_M47278_IG53:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
RWD00 dq 006E007200610077h, 00730067006E0069h, 0072004500730041h, 00730072006F0072h
-RWD32 dd G_M47278_IG49 - G_M47278_IG02
- dd G_M47278_IG41 - G_M47278_IG02
- dd G_M47278_IG35 - G_M47278_IG02
- dd G_M47278_IG29 - G_M47278_IG02
- dd G_M47278_IG27 - G_M47278_IG02
- dd G_M47278_IG25 - G_M47278_IG02
+RWD32 dd G_M47278_IG48 - G_M47278_IG02
+ dd G_M47278_IG40 - G_M47278_IG02
+ dd G_M47278_IG34 - G_M47278_IG02
+ dd G_M47278_IG28 - G_M47278_IG02
+ dd G_M47278_IG26 - G_M47278_IG02
+ dd G_M47278_IG24 - G_M47278_IG02
dd G_M47278_IG08 - G_M47278_IG02
dd G_M47278_IG08 - G_M47278_IG02
- dd G_M47278_IG23 - G_M47278_IG02
- dd G_M47278_IG21 - G_M47278_IG02
+ dd G_M47278_IG22 - G_M47278_IG02
+ dd G_M47278_IG20 - G_M47278_IG02
dd G_M47278_IG03 - G_M47278_IG02
RWD76 dd 00000000h
RWD80 dq 0072006500560065h, 006E006F00690073h
RWD96 dq 0067006E0061006Ch, 0065006700610075h
RWD112 dq 0050007900720074h, 0074006E0069006Fh
RWD128 dq 00740069006D0065h, 00720074006E0045h
RWD144 dq 006E00550077006Fh, 0065006600610073h
RWD160 dq 006F006C006C0061h, 0073006E00550077h
RWD176 dq 00630069006C0062h, 006E006700690053h
RWD192 dq 006C006200750070h, 0069005300630069h
RWD208 dq 0067007500620065h, 0065007000790054h
RWD224 dq 0075006200650064h, 0070007900540067h
RWD240 dq 00790061006C0065h, 006E006700690053h
RWD256 dq 0061006C00650064h, 0067006900530079h
RWD272 dq 006900740070006Fh, 0065007A0069006Dh
RWD288 dq 00740061006C0070h, 006D0072006F0066h
-; Total bytes of code 1838, prolog size 46, PerfScore 932.96, instruction count 403, allocated bytes for code 1838 (MethodHash=fe2d4751) for method Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(byref):Microsoft.Extensions.DependencyModel.CompilationOptions (FullOpts)
+; Total bytes of code 1597, prolog size 40, PerfScore 890.96, instruction count 361, allocated bytes for code 1597 (MethodHash=fe2d4751) for method Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(byref):Microsoft.Extensions.DependencyModel.CompilationOptions (FullOpts)
; ============================================================ -97 (-14.48 % of base) - System.Linq.Enumerable+OrderedIterator`2[System.__Canon,System.Nullable`1[int]]:TryGetFirst(byref):System.__Canon:this ; Assembly listing for method System.Linq.Enumerable+OrderedIterator`2[System.__Canon,System.Nullable`1[int]]:TryGetFirst(byref):System.__Canon:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 12, 12.50) ref -> [rbp-0x50] this class-hnd EH-live single-def <System.Linq.Enumerable+OrderedIterator`2[System.__Canon,System.Nullable`1[int]]>
-; V01 arg1 [V01,T16] ( 5, 3.50) byref -> rbx single-def
-; V02 loc0 [V02,T03] ( 10, 15.50) ref -> [rbp-0x58] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
-; V03 loc1 [V03,T13] ( 3, 6.50) ref -> r15 class-hnd single-def <System.Collections.Generic.IComparer`1[System.Nullable`1[int]]>
-; V04 loc2 [V04,T05] ( 7, 13.50) ref -> r14 class-hnd single-def <System.Func`2[System.__Canon,System.Nullable`1[int]]>
-; V05 loc3 [V05,T12] ( 5, 7.50) ref -> r13 class-hnd <System.__Canon>
-; V06 loc4 [V06,T06] ( 5, 12.50) struct ( 8) [rbp-0x38] do-not-enreg[SR] multireg-ret <System.Nullable`1[int]>
-; V07 loc5 [V07,T08] ( 3, 12 ) ref -> r12 class-hnd <System.__Canon>
-; V08 loc6 [V08,T09] ( 3, 12 ) struct ( 8) [rbp-0x40] do-not-enreg[SR] multireg-ret <System.Nullable`1[int]>
-; V09 loc7 [V09,T14] ( 3, 6 ) ref -> r12 class-hnd <System.__Canon>
-; V10 loc8 [V10,T15] ( 3, 6 ) struct ( 8) [rbp-0x48] do-not-enreg[SR] multireg-ret <System.Nullable`1[int]>
-; V11 loc9 [V11,T23] ( 3, 1.50) ref -> r15 class-hnd <System.__Canon>
+; V00 this [V00,T07] ( 10, 6.50) ref -> [rbp-0x50] this class-hnd EH-live single-def <System.Linq.Enumerable+OrderedIterator`2[System.__Canon,System.Nullable`1[int]]>
+; V01 arg1 [V01,T13] ( 5, 3.50) byref -> rbx single-def
+; V02 loc0 [V02,T01] ( 10, 15.50) ref -> [rbp-0x58] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
+; V03 loc1 [V03,T10] ( 3, 6.50) ref -> r15 class-hnd single-def <System.Collections.Generic.IComparer`1[System.Nullable`1[int]]>
+; V04 loc2 [V04,T02] ( 7, 13.50) ref -> r14 class-hnd single-def <System.Func`2[System.__Canon,System.Nullable`1[int]]>
+; V05 loc3 [V05,T08] ( 5, 7.50) ref -> r12 class-hnd <System.__Canon>
+; V06 loc4 [V06,T03] ( 5, 12.50) struct ( 8) [rbp-0x38] do-not-enreg[SR] multireg-ret <System.Nullable`1[int]>
+; V07 loc5 [V07,T04] ( 3, 12 ) ref -> [rbp-0x60] class-hnd <System.__Canon>
+; V08 loc6 [V08,T05] ( 3, 12 ) struct ( 8) [rbp-0x40] do-not-enreg[SR] multireg-ret <System.Nullable`1[int]>
+; V09 loc7 [V09,T11] ( 3, 6 ) ref -> [rbp-0x68] class-hnd <System.__Canon>
+; V10 loc8 [V10,T12] ( 3, 6 ) struct ( 8) [rbp-0x48] do-not-enreg[SR] multireg-ret <System.Nullable`1[int]>
+; V11 loc9 [V11,T21] ( 3, 1.50) ref -> r15 class-hnd <System.__Canon>
;* V12 loc10 [V12 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V15 tmp2 [V15,T17] ( 4, 3 ) long -> r11 "VirtualCall with runtime lookup"
+; V15 tmp2 [V15,T14] ( 4, 3 ) long -> r11 "VirtualCall with runtime lookup"
;* V16 tmp3 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V17 tmp4 [V17,T18] ( 4, 3 ) long -> r11 "VirtualCall with runtime lookup"
+; V17 tmp4 [V17,T15] ( 3, 3 ) long -> r11 "VirtualCall with runtime lookup"
;* V18 tmp5 [V18 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V19 tmp6 [V19,T07] ( 4, 12 ) long -> r11 "VirtualCall with runtime lookup"
+; V19 tmp6 [V19,T06] ( 3, 12 ) long -> r11 "VirtualCall with runtime lookup"
;* V20 tmp7 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V21 tmp8 [V21,T00] ( 4, 24 ) long -> r11 "VirtualCall with runtime lookup"
-; V22 PSPSym [V22,T24] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
-; V23 rat0 [V23,T21] ( 3, 2.20) long -> rsi "Spilling to split statement for tree"
-; V24 rat1 [V24,T19] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-; V25 rat2 [V25,T22] ( 3, 2.20) long -> rsi "Spilling to split statement for tree"
-; V26 rat3 [V26,T20] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
-; V27 rat4 [V27,T02] ( 3, 17.60) long -> rsi "Spilling to split statement for tree"
-; V28 rat5 [V28,T01] ( 3, 22.40) long -> r11 "fgMakeTemp is creating a new local variable"
-; V29 rat6 [V29,T11] ( 3, 8.80) long -> rsi "Spilling to split statement for tree"
-; V30 rat7 [V30,T10] ( 3, 11.20) long -> r11 "fgMakeTemp is creating a new local variable"
+; V21 tmp8 [V21,T00] ( 3, 24 ) long -> r11 "VirtualCall with runtime lookup"
+; V22 PSPSym [V22,T22] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
+; V23 cse0 [V23,T09] ( 4, 7 ) long -> r13 "CSE #02: moderate"
+; V24 rat0 [V24,T18] ( 3, 2.20) long -> rsi "Spilling to split statement for tree"
+; V25 rat1 [V25,T16] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable"
+; V26 rat2 [V26,T19] ( 3, 2.20) long -> rsi "Spilling to split statement for tree"
+; V27 rat3 [V27,T20] ( 3, 2 ) long -> r13 "runtime lookup"
+; V28 rat4 [V28,T17] ( 3, 2.80) long -> r13 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 56
+; Lcl frame size = 72
G_M62063_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 56
- lea rbp, [rsp+0x60]
- mov qword ptr [rbp-0x60], rsp
+ sub rsp, 72
+ lea rbp, [rsp+0x70]
+ mov qword ptr [rbp-0x70], rsp
mov qword ptr [rbp-0x30], rdi
mov gword ptr [rbp-0x50], rdi
mov rbx, rsi
;; size=34 bbWeight=1 PerfScore 10.00
G_M62063_IG02:
cmp gword ptr [rdi+0x20], 0
- jne G_M62063_IG21
+ jne G_M62063_IG17
;; size=11 bbWeight=1 PerfScore 4.00
G_M62063_IG03:
mov rsi, qword ptr [rdi]
mov rax, qword ptr [rsi+0x30]
mov rax, qword ptr [rax+0x10]
mov r11, qword ptr [rax+0x18]
test r11, r11
- je G_M62063_IG23
+ je G_M62063_IG19
;; size=24 bbWeight=0.50 PerfScore 4.62
G_M62063_IG04:
mov rdi, gword ptr [rbp-0x50]
mov rdi, gword ptr [rdi+0x18]
call [r11]
mov rdi, rax
mov gword ptr [rbp-0x58], rdi
;; size=18 bbWeight=0.50 PerfScore 3.62
G_M62063_IG05:
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
test eax, eax
jne SHORT G_M62063_IG06
mov byte ptr [rbx], 0
xor r15, r15
- jmp G_M62063_IG19
+ jmp G_M62063_IG15
;; size=28 bbWeight=0.50 PerfScore 3.88
G_M62063_IG06:
mov rdi, gword ptr [rbp-0x50]
mov r15, gword ptr [rdi+0x30]
mov r14, gword ptr [rdi+0x28]
mov rsi, qword ptr [rdi]
mov rax, qword ptr [rsi+0x30]
mov rax, qword ptr [rax+0x10]
- mov r11, qword ptr [rax+0x20]
- test r11, r11
+ mov r13, qword ptr [rax+0x20]
+ test r13, r13
je SHORT G_M62063_IG08
;; size=32 bbWeight=0.50 PerfScore 7.12
G_M62063_IG07:
+ mov r11, r13
mov rdi, gword ptr [rbp-0x58]
call [r11]
- mov r13, rax
- mov rsi, r13
+ mov r12, rax
+ mov rsi, r12
mov rdi, gword ptr [r14+0x08]
call [r14+0x18]System.Func`2[System.__Canon,System.Nullable`1[int]]:Invoke(System.__Canon):System.Nullable`1[int]:this
mov qword ptr [rbp-0x38], rax
mov rdi, gword ptr [rbp-0x50]
cmp byte ptr [rdi+0x48], 0
je SHORT G_M62063_IG10
- jmp G_M62063_IG16
- ;; size=40 bbWeight=0.50 PerfScore 8.75
+ jmp G_M62063_IG13
+ ;; size=43 bbWeight=0.50 PerfScore 8.88
G_M62063_IG08:
mov rdi, rsi
mov rsi, 0xD1FFAB1E ; global ptr
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
call [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov r11, rax
+ mov r13, rax
jmp SHORT G_M62063_IG07
;; size=30 bbWeight=0.10 PerfScore 0.60
G_M62063_IG09:
+ mov r12, gword ptr [rbp-0x68]
mov r11, qword ptr [rbp-0x48]
mov qword ptr [rbp-0x38], r11
- mov r13, r12
- ;; size=11 bbWeight=2 PerfScore 4.50
+ ;; size=12 bbWeight=2 PerfScore 6.00
G_M62063_IG10:
mov rdi, gword ptr [rbp-0x58]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
test eax, eax
- je G_M62063_IG17
+ je G_M62063_IG14
;; size=25 bbWeight=4 PerfScore 22.00
G_M62063_IG11:
- mov rdi, gword ptr [rbp-0x50]
- mov rsi, qword ptr [rdi]
- mov rax, qword ptr [rsi+0x30]
- mov rax, qword ptr [rax+0x10]
- mov r11, qword ptr [rax+0x20]
- test r11, r11
- je SHORT G_M62063_IG13
- ;; size=24 bbWeight=2 PerfScore 20.50
-G_M62063_IG12:
+ mov r11, r13
mov rdi, gword ptr [rbp-0x58]
call [r11]
- mov r12, rax
- mov rsi, r12
+ mov gword ptr [rbp-0x68], rax
+ mov rsi, rax
mov rdi, gword ptr [r14+0x08]
call [r14+0x18]System.Func`2[System.__Canon,System.Nullable`1[int]]:Invoke(System.__Canon):System.Nullable`1[int]:this
mov qword ptr [rbp-0x48], rax
mov rdi, r15
mov rdx, qword ptr [rbp-0x38]
mov rsi, qword ptr [rbp-0x48]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IComparer`1[System.Nullable`1[int]]:Compare(System.Nullable`1[int],System.Nullable`1[int]):int:this
call [r11]System.Collections.Generic.IComparer`1[System.Nullable`1[int]]:Compare(System.Nullable`1[int],System.Nullable`1[int]):int:this
test eax, eax
jge SHORT G_M62063_IG10
jmp SHORT G_M62063_IG09
- ;; size=55 bbWeight=2 PerfScore 38.50
-G_M62063_IG13:
- mov rdi, rsi
- mov rsi, 0xD1FFAB1E ; global ptr
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
- call [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov r11, rax
- jmp SHORT G_M62063_IG12
- ;; size=30 bbWeight=0.40 PerfScore 2.40
-G_M62063_IG14:
- mov rdi, gword ptr [rbp-0x50]
- mov rsi, qword ptr [rdi]
- mov rax, qword ptr [rsi+0x30]
- mov rax, qword ptr [rax+0x10]
- mov r11, qword ptr [rax+0x20]
- test r11, r11
- je SHORT G_M62063_IG18
- ;; size=24 bbWeight=4 PerfScore 41.00
-G_M62063_IG15:
+ ;; size=59 bbWeight=2 PerfScore 40.50
+G_M62063_IG12:
+ mov r11, r13
mov rdi, gword ptr [rbp-0x58]
call [r11]
- mov r12, rax
- mov rsi, r12
+ mov gword ptr [rbp-0x60], rax
+ mov rsi, rax
mov rdi, gword ptr [r14+0x08]
call [r14+0x18]System.Func`2[System.__Canon,System.Nullable`1[int]]:Invoke(System.__Canon):System.Nullable`1[int]:this
mov qword ptr [rbp-0x40], rax
mov rdi, r15
mov rdx, qword ptr [rbp-0x38]
mov rsi, qword ptr [rbp-0x40]
mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IComparer`1[System.Nullable`1[int]]:Compare(System.Nullable`1[int],System.Nullable`1[int]):int:this
call [r11]System.Collections.Generic.IComparer`1[System.Nullable`1[int]]:Compare(System.Nullable`1[int],System.Nullable`1[int]):int:this
test eax, eax
- jle SHORT G_M62063_IG16
+ jle SHORT G_M62063_IG13
+ mov r12, gword ptr [rbp-0x60]
mov r11, qword ptr [rbp-0x40]
mov qword ptr [rbp-0x38], r11
- mov r13, r12
- ;; size=64 bbWeight=4 PerfScore 78.00
-G_M62063_IG16:
+ ;; size=69 bbWeight=4 PerfScore 85.00
+G_M62063_IG13:
mov rdi, gword ptr [rbp-0x58]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
test eax, eax
- jne SHORT G_M62063_IG14
+ jne SHORT G_M62063_IG12
;; size=21 bbWeight=4 PerfScore 22.00
-G_M62063_IG17:
+G_M62063_IG14:
mov byte ptr [rbx], 1
- mov r15, r13
- jmp SHORT G_M62063_IG19
- ;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M62063_IG18:
- mov rdi, rsi
- mov rsi, 0xD1FFAB1E ; global ptr
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
- call [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov r11, rax
- jmp SHORT G_M62063_IG15
- ;; size=30 bbWeight=0.80 PerfScore 4.80
-G_M62063_IG19:
+ mov r15, r12
+ ;; size=6 bbWeight=0.50 PerfScore 0.62
+G_M62063_IG15:
mov rdi, gword ptr [rbp-0x58]
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
mov rax, r15
;; size=20 bbWeight=0.50 PerfScore 2.25
-G_M62063_IG20:
- add rsp, 56
+G_M62063_IG16:
+ add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M62063_IG21:
+G_M62063_IG17:
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Linq.Enumerable+OrderedIterator`1[System.__Canon]:TryGetFirst(byref):System.__Canon:this
call [rax]System.Linq.Enumerable+OrderedIterator`1[System.__Canon]:TryGetFirst(byref):System.__Canon:this
nop
;; size=16 bbWeight=0.50 PerfScore 1.88
-G_M62063_IG22:
- add rsp, 56
+G_M62063_IG18:
+ add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M62063_IG23:
+G_M62063_IG19:
mov rdi, rsi
mov rsi, 0xD1FFAB1E ; global ptr
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_RUNTIMEHANDLE_CLASS
call [rax]CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov r11, rax
jmp G_M62063_IG04
;; size=33 bbWeight=0.10 PerfScore 0.60
-G_M62063_IG24:
+G_M62063_IG20:
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+0x60]
+ lea rbp, [rbp+0x70]
;; size=22 bbWeight=0 PerfScore 0.00
-G_M62063_IG25:
+G_M62063_IG21:
cmp gword ptr [rbp-0x58], 0
- je SHORT G_M62063_IG26
+ je SHORT G_M62063_IG22
mov rdi, gword ptr [rbp-0x58]
mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
call [r11]System.IDisposable:Dispose():this
;; size=24 bbWeight=0 PerfScore 0.00
-G_M62063_IG26:
+G_M62063_IG22:
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M62063_IG27:
+G_M62063_IG23:
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 670, prolog size 34, PerfScore 286.90, instruction count 186, allocated bytes for code 670 (MethodHash=37e00d90) for method System.Linq.Enumerable+OrderedIterator`2[System.__Canon,System.Nullable`1[int]]:TryGetFirst(byref):System.__Canon:this (FullOpts)
+; Total bytes of code 573, prolog size 34, PerfScore 227.83, instruction count 162, allocated bytes for code 573 (MethodHash=37e00d90) for method System.Linq.Enumerable+OrderedIterator`2[System.__Canon,System.Nullable`1[int]]:TryGetFirst(byref):System.__Canon: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/5e7c7227a0da5bf4e0e3739e015bf64b |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 14 minutes 44 seconds.
dotnet/runtime#110501
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: