MihuBot / runtime-utils

0 stars 0 forks source link

[JitDiff X64] xtqqczze/dotnet-runtime/InternalFallback #476

Open MihuBot opened 3 weeks ago

MihuBot commented 3 weeks ago

Job completed in 14 minutes.

Diffs

Found 262 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 41559437
Total bytes of diff: 41559397
Total bytes of delta: -40 (-0.00 % of base)
Total relative delta: 0.00
    diff is an improvement.
    relative diff is a regression.

Top file improvements (bytes):
         -40 : System.Private.CoreLib.dasm (-0.00 % of base)

1 total files with Code Size differences (1 improved, 0 regressed), 258 unchanged.

Top method regressions (bytes):
           8 (0.43 % of base) : System.Private.CoreLib.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           4 (1.96 % of base) : System.Private.CoreLib.dasm - System.Text.Encoding+EncodingCharBuffer:Fallback(ubyte[]):ubyte:this (FullOpts)
           4 (0.61 % of base) : System.Private.CoreLib.dasm - System.Text.UTF32Encoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           2 (0.13 % of base) : System.Private.CoreLib.dasm - System.Text.UnicodeEncoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this (FullOpts)

Top method improvements (bytes):
         -50 (-2.37 % of base) : System.Private.CoreLib.dasm - System.Text.UnicodeEncoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
          -4 (-0.36 % of base) : System.Private.CoreLib.dasm - System.Text.UTF32Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
          -4 (-0.37 % of base) : System.Private.CoreLib.dasm - System.Text.UTF32Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (FullOpts)

Top method regressions (percentages):
           4 (1.96 % of base) : System.Private.CoreLib.dasm - System.Text.Encoding+EncodingCharBuffer:Fallback(ubyte[]):ubyte:this (FullOpts)
           4 (0.61 % of base) : System.Private.CoreLib.dasm - System.Text.UTF32Encoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           8 (0.43 % of base) : System.Private.CoreLib.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           2 (0.13 % of base) : System.Private.CoreLib.dasm - System.Text.UnicodeEncoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this (FullOpts)

Top method improvements (percentages):
         -50 (-2.37 % of base) : System.Private.CoreLib.dasm - System.Text.UnicodeEncoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
          -4 (-0.37 % of base) : System.Private.CoreLib.dasm - System.Text.UTF32Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
          -4 (-0.36 % of base) : System.Private.CoreLib.dasm - System.Text.UTF32Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)

7 total methods with Code Size differences (3 improved, 4 regressed), 252567 unchanged.

--------------------------------------------------------------------------------

Artifacts:

MihuBot commented 3 weeks ago

Top method regressions

8 (0.43 % of base) - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this ```diff ; Assembly listing for method System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data ; 0 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T17] ( 13, 44 ) ref -> r13 this class-hnd single-def ; V01 arg1 [V01,T02] ( 29,134.50) long -> rbx ; V02 arg2 [V02,T40] ( 3, 3 ) int -> rdx single-def ; V03 arg3 [V03,T03] ( 28,111 ) long -> r15 ; V04 arg4 [V04,T41] ( 3, 3 ) int -> r8 single-def ; V05 arg5 [V05,T05] ( 28,101 ) ref -> r14 class-hnd single-def ; V06 loc0 [V06,T04] ( 20,112 ) ushort -> registers ; V07 loc1 [V07,T06] ( 11, 96 ) ushort -> [rbp-0x2C] ; V08 loc2 [V08,T31] ( 3, 9 ) ubyte -> [rbp-0x30] ; V09 loc3 [V09,T24] ( 4, 13 ) long -> [rbp-0x38] spill-single-def ; V10 loc4 [V10,T10] ( 9, 51 ) long -> [rbp-0x40] spill-single-def ; V11 loc5 [V11,T25] ( 4, 12 ) long -> [rbp-0x48] spill-single-def ; V12 loc6 [V12,T20] ( 7, 31.50) long -> [rbp-0x50] spill-single-def -; V13 loc7 [V13,T00] ( 59,400.50) ref -> [rbp-0x68] class-hnd +; V13 loc7 [V13,T00] ( 56,380.50) ref -> [rbp-0x68] class-hnd ; V14 loc8 [V14 ] ( 9, 60 ) long -> [rbp-0x58] do-not-enreg[X] addr-exposed ld-addr-op ; V15 loc9 [V15,T23] ( 3, 20 ) long -> rdx ; V16 loc10 [V16,T07] ( 7, 70 ) long -> rdi ; V17 loc11 [V17,T09] ( 5, 52 ) long -> r15 ; V18 loc12 [V18,T18] ( 5, 40 ) long -> rax ;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V20 tmp1 [V20,T01] ( 4,144 ) int -> registers ; V21 tmp2 [V21,T33] ( 2, 8 ) long -> rdi "impSpillLclRefs" ; V22 tmp3 [V22,T28] ( 3, 12 ) long -> rdx "impSpillLclRefs" ; V23 tmp4 [V23,T34] ( 2, 8 ) long -> rdi "impSpillLclRefs" ; V24 tmp5 [V24,T29] ( 3, 12 ) long -> rdx "impSpillLclRefs" ; V25 tmp6 [V25,T35] ( 3, 6 ) ref -> rax ; V26 tmp7 [V26,T44] ( 3, 0 ) ref -> r13 class-hnd exact "Single-def Box Helper" ; V27 tmp8 [V27,T49] ( 2, 0 ) ref -> r14 class-hnd exact "impImportAndPushBox" ; V28 tmp9 [V28,T45] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V29 tmp10 [V29,T19] ( 3, 32 ) ref -> rax ; V30 tmp11 [V30,T13] ( 3, 48 ) long -> rdx "impSpillLclRefs" ; V31 tmp12 [V31,T14] ( 3, 48 ) long -> rdx "impSpillLclRefs" ; V32 tmp13 [V32,T15] ( 3, 48 ) long -> rdx "impSpillLclRefs" ; V33 tmp14 [V33,T16] ( 3, 48 ) long -> rdx "impSpillLclRefs" ; V34 tmp15 [V34,T22] ( 3, 24 ) ref -> rax ; V35 tmp16 [V35,T36] ( 3, 6 ) ref -> rax ;* V36 tmp17 [V36 ] ( 0, 0 ) long -> zero-ref ; V37 tmp18 [V37,T42] ( 2, 4 ) long -> rdx ; V38 tmp19 [V38,T37] ( 3, 6 ) long -> rdi ;* V39 tmp20 [V39 ] ( 0, 0 ) long -> zero-ref ; V40 tmp21 [V40,T50] ( 2, 0 ) ref -> rbx class-hnd exact single-def "non-inline candidate call" ; V41 tmp22 [V41,T51] ( 2, 0 ) ref -> r15 class-hnd exact single-def "impAppendStmt" ; V42 tmp23 [V42,T46] ( 3, 0 ) ref -> rdi class-hnd single-def "dup spill" ;* V43 tmp24 [V43 ] ( 0, 0 ) ref -> zero-ref single-def ;* V44 tmp25 [V44 ] ( 0, 0 ) ref -> zero-ref single-def ;* V45 tmp26 [V45 ] ( 0, 0 ) ref -> zero-ref single-def ;* V46 tmp27 [V46 ] ( 0, 0 ) ref -> zero-ref single-def ;* V47 tmp28 [V47 ] ( 0, 0 ) ref -> zero-ref single-def ; V48 tmp29 [V48,T47] ( 3, 0 ) ref -> r14 ; V49 tmp30 [V49,T48] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" ; V50 tmp31 [V50,T11] ( 3, 48 ) ref -> rdi "argument with side effect" ; V51 tmp32 [V51,T12] ( 3, 48 ) ref -> rdi "argument with side effect" ; V52 tmp33 [V52,T26] ( 3, 12 ) ref -> rdi "argument with side effect" ; V53 tmp34 [V53,T27] ( 3, 12 ) ref -> rdi "argument with side effect" ; V54 tmp35 [V54,T52] ( 2, 0 ) ref -> r15 "argument with side effect" ; V55 tmp36 [V55,T53] ( 2, 0 ) ref -> rdx "argument with side effect" ; V56 tmp37 [V56,T54] ( 2, 0 ) ref -> rsi single-def "argument with side effect" ; V57 cse0 [V57,T38] ( 3, 6 ) long -> rdi "CSE #02: conservative" ; V58 cse1 [V58,T21] ( 5, 28 ) long -> [rbp-0x60] multi-def "CSE #11: moderate" ; V59 cse2 [V59,T39] ( 3, 6 ) long -> rsi "CSE #04: conservative" ; V60 cse3 [V60,T08] ( 5, 64 ) long -> rsi "CSE #05: moderate" ; V61 cse4 [V61,T32] ( 4, 8 ) long -> rdx "CSE #16: moderate" ; V62 rat0 [V62,T30] ( 3, 12 ) long -> rdi "ReplaceWithLclVar is creating a new local variable" ; V63 rat1 [V63,T43] ( 3, 3 ) long -> rax "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 72 G_M43362_IG01: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 72 lea rbp, [rsp+0x70] mov r13, rdi mov rbx, rsi mov r15, rcx mov r14, r9 ;; size=31 bbWeight=1 PerfScore 7.75 G_M43362_IG02: xor r12d, r12d xor eax, eax mov dword ptr [rbp-0x30], eax movsxd rcx, r8d add rcx, r15 mov qword ptr [rbp-0x38], rcx movsxd rdi, edx lea rdx, [rbx+2*rdi] mov qword ptr [rbp-0x40], rdx mov qword ptr [rbp-0x48], r15 mov qword ptr [rbp-0x50], rbx xor r9, r9 test r14, r14 je SHORT G_M43362_IG04 ;; size=45 bbWeight=1 PerfScore 8.25 G_M43362_IG03: movzx r12, word ptr [r14+0x24] cmp gword ptr [r14+0x10], 0 mov rax, r9 je G_M43362_IG07 mov rdi, r14 mov r9, 0xD1FFAB1E ; code for System.Text.Encoder:get_FallbackBuffer():System.Text.EncoderFallbackBuffer:this call [r9]System.Text.Encoder:get_FallbackBuffer():System.Text.EncoderFallbackBuffer:this mov r9, rax mov rdi, r9 mov gword ptr [rbp-0x68], r9 mov rax, qword ptr [r9] mov rax, qword ptr [rax+0x48] call [rax]System.Text.EncoderFallbackBuffer:get_Remaining():int:this test eax, eax jle SHORT G_M43362_IG05 cmp byte ptr [r14+0x27], 0 je SHORT G_M43362_IG05 jmp G_M43362_IG61 ;; size=70 bbWeight=0.50 PerfScore 12.75 G_M43362_IG04: mov rax, r9 jmp SHORT G_M43362_IG07 align [0 bytes for IG26] ;; size=5 bbWeight=0.50 PerfScore 1.12 G_M43362_IG05: mov rax, gword ptr [rbp-0x68] mov rcx, qword ptr [rbp-0x50] mov qword ptr [rax+0x18], rcx mov rdx, qword ptr [rbp-0x40] mov qword ptr [rax+0x20], rdx mov gword ptr [rbp-0x68], rax lea rdi, bword ptr [rax+0x08] mov rsi, r14 call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rbp-0x68] mov word ptr [rax+0x30], 0 mov byte ptr [rax+0x32], 0 xor edi, edi mov dword ptr [rax+0x28], edi jmp SHORT G_M43362_IG07 ;; size=57 bbWeight=2 PerfScore 28.00 G_M43362_IG06: mov qword ptr [rbp-0x58], rbx lea rdx, [rbp-0x58] + mov gword ptr [rbp-0x68], rax mov rdi, rax mov esi, ecx - mov gword ptr [rbp-0x68], rax - mov rcx, qword ptr [rax] - mov rcx, qword ptr [rcx+0x48] - call [rcx+0x10]System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this + mov rcx, 0xD1FFAB1E ; code for System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this + cmp dword ptr [rdi], edi + call [rcx]System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this mov rbx, qword ptr [rbp-0x58] mov rax, gword ptr [rbp-0x68] - ;; size=35 bbWeight=8 PerfScore 96.00 + ;; size=39 bbWeight=8 PerfScore 90.00 G_M43362_IG07: test rax, rax je SHORT G_M43362_IG09 ;; size=5 bbWeight=64 PerfScore 80.00 G_M43362_IG08: mov gword ptr [rbp-0x68], rax mov rdi, rax mov rcx, 0xD1FFAB1E ; code for System.Text.EncoderFallbackBuffer:InternalGetNextChar():ushort:this call [rcx]System.Text.EncoderFallbackBuffer:InternalGetNextChar():ushort:this jmp SHORT G_M43362_IG10 ;; size=21 bbWeight=8 PerfScore 52.00 G_M43362_IG09: xor edi, edi mov gword ptr [rbp-0x68], rax mov eax, edi ;; size=8 bbWeight=8 PerfScore 12.00 G_M43362_IG10: movzx rcx, ax test eax, eax jne SHORT G_M43362_IG20 ;; size=7 bbWeight=64 PerfScore 96.00 G_M43362_IG11: cmp rbx, qword ptr [rbp-0x40] jb SHORT G_M43362_IG20 ;; size=6 bbWeight=16 PerfScore 48.00 G_M43362_IG12: test r12d, r12d jle SHORT G_M43362_IG17 ;; size=5 bbWeight=2 PerfScore 2.50 G_M43362_IG13: test r14, r14 je SHORT G_M43362_IG15 ;; size=5 bbWeight=4 PerfScore 5.00 G_M43362_IG14: cmp byte ptr [r14+0x26], 0 je SHORT G_M43362_IG16 ;; size=7 bbWeight=2 PerfScore 8.00 G_M43362_IG15: cmp dword ptr [rbp-0x30], 0 je SHORT G_M43362_IG18 jmp G_M43362_IG60 ;; size=11 bbWeight=4 PerfScore 20.00 G_M43362_IG16: mov r13d, r12d mov r12, qword ptr [rbp-0x48] jmp G_M43362_IG38 ;; size=12 bbWeight=1 PerfScore 3.25 G_M43362_IG17: mov r13d, r12d mov r12, qword ptr [rbp-0x48] jmp G_M43362_IG38 ;; size=12 bbWeight=1 PerfScore 3.25 G_M43362_IG18: mov rdx, gword ptr [rbp-0x68] test rdx, rdx mov gword ptr [rbp-0x68], rdx jne G_M43362_IG59 ;; size=17 bbWeight=4 PerfScore 13.00 G_M43362_IG19: test r14, r14 je G_M43362_IG57 mov rdi, r14 mov rcx, 0xD1FFAB1E ; code for System.Text.Encoder:get_FallbackBuffer():System.Text.EncoderFallbackBuffer:this call [rcx]System.Text.Encoder:get_FallbackBuffer():System.Text.EncoderFallbackBuffer:this jmp G_M43362_IG58 ;; size=29 bbWeight=2 PerfScore 13.50 G_M43362_IG20: test ecx, ecx jne SHORT G_M43362_IG22 movzx rcx, byte ptr [r13+0x26] xor ecx, 1 je SHORT G_M43362_IG21 mov edi, ebx and edi, 7 or edi, r12d je SHORT G_M43362_IG23 ;; size=24 bbWeight=2 PerfScore 12.50 G_M43362_IG21: movzx rcx, word ptr [rbx] mov eax, ecx add rbx, 2 mov ecx, eax ;; size=11 bbWeight=2 PerfScore 5.50 G_M43362_IG22: mov edi, ecx sub edi, 0xD800 cmp edi, 0x7FF ja G_M43362_IG47 cmp ecx, 0xDBFF jg G_M43362_IG31 test r12d, r12d jle G_M43362_IG44 add rbx, -2 mov rax, gword ptr [rbp-0x68] test rax, rax jne G_M43362_IG56 test r14, r14 je G_M43362_IG45 mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Text.Encoder:get_FallbackBuffer():System.Text.EncoderFallbackBuffer:this call [rax]System.Text.Encoder:get_FallbackBuffer():System.Text.EncoderFallbackBuffer:this jmp G_M43362_IG46 ;; size=87 bbWeight=2 PerfScore 27.00 G_M43362_IG23: lea rdx, [rbx-0x06] mov rcx, qword ptr [rbp-0x40] mov rdi, rcx sub rdi, rbx mov rsi, rdi shr rsi, 63 add rdi, rsi sar rdi, 1 mov r8, qword ptr [rbp-0x38] mov rsi, r8 sub rsi, r15 sar rsi, 1 cmp rdi, rsi jg SHORT G_M43362_IG24 jmp SHORT G_M43362_IG25 ;; size=47 bbWeight=2 PerfScore 17.50 G_M43362_IG24: mov rdi, rsi ;; size=3 bbWeight=2 PerfScore 0.50 G_M43362_IG25: lea rdx, [rdx+2*rdi] mov rdi, rbx cmp rdi, rdx jae G_M43362_IG30 ;; size=16 bbWeight=2 PerfScore 4.00 G_M43362_IG26: mov rsi, qword ptr [rdi] mov rax, 0xD1FFAB1E test rsi, rax je SHORT G_M43362_IG29 ;; size=18 bbWeight=16 PerfScore 56.00 G_M43362_IG27: mov rax, 0xD1FFAB1E and rax, rsi mov r9, 0xD1FFAB1E xor rax, r9 mov r9, 0xD1FFAB1E test rax, r9 je SHORT G_M43362_IG28 mov r9, 0xD1FFAB1E test rax, r9 je SHORT G_M43362_IG28 test eax, -0x10000 je SHORT G_M43362_IG28 movzx rax, ax test eax, eax jne SHORT G_M43362_IG29 ;; size=70 bbWeight=8 PerfScore 54.00 G_M43362_IG28: mov rax, 0xD1FFAB1E and rax, rsi mov r9, 0xD1FFAB1E cmp rax, r9 jne SHORT G_M43362_IG30 ;; size=28 bbWeight=8 PerfScore 16.00 G_M43362_IG29: mov qword ptr [r15], rsi add rdi, 8 add r15, 8 cmp rdi, rdx jb G_M43362_IG26 ;; size=20 bbWeight=16 PerfScore 44.00 G_M43362_IG30: mov rbx, rdi cmp rbx, rcx jae G_M43362_IG12 jmp G_M43362_IG21 ;; size=17 bbWeight=2 PerfScore 7.00 G_M43362_IG31: test r12d, r12d jne SHORT G_M43362_IG32 mov rax, gword ptr [rbp-0x68] test rax, rax jne G_M43362_IG06 test r14, r14 je G_M43362_IG42 mov dword ptr [rbp-0x2C], ecx mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Text.Encoder:get_FallbackBuffer():System.Text.EncoderFallbackBuffer:this call [rax]System.Text.Encoder:get_FallbackBuffer():System.Text.EncoderFallbackBuffer:this jmp G_M43362_IG43 ;; size=50 bbWeight=8 PerfScore 90.00 G_M43362_IG32: lea rdi, [r15+0x03] cmp rdi, qword ptr [rbp-0x38] jb SHORT G_M43362_IG33 mov r12, gword ptr [rbp-0x68] test r12, r12 je SHORT G_M43362_IG36 cmp byte ptr [r12+0x32], 0 je SHORT G_M43362_IG36 mov rdi, r12 mov rax, qword ptr [r12] mov rax, qword ptr [rax+0x40] mov qword ptr [rbp-0x60], rax call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this mov rdi, r12 mov r12, qword ptr [rbp-0x60] call [r12+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this jmp SHORT G_M43362_IG37 ;; size=59 bbWeight=8 PerfScore 194.00 G_M43362_IG33: cmp byte ptr [r13+0x26], 0 je SHORT G_M43362_IG34 mov rdx, r15 lea r15, [rdx+0x01] mov edi, r12d sar edi, 8 mov byte ptr [rdx], dil mov rdx, r15 lea r15, [rdx+0x01] mov byte ptr [rdx], r12b jmp SHORT G_M43362_IG35 ;; size=35 bbWeight=8 PerfScore 82.00 G_M43362_IG34: mov rdx, r15 lea r15, [rdx+0x01] mov byte ptr [rdx], r12b mov rdx, r15 lea r15, [rdx+0x01] sar r12d, 8 mov byte ptr [rdx], r12b ;; size=24 bbWeight=8 PerfScore 32.00 G_M43362_IG35: xor r12d, r12d jmp G_M43362_IG49 ;; size=8 bbWeight=8 PerfScore 18.00 G_M43362_IG36: add rbx, -4 ;; size=4 bbWeight=8 PerfScore 2.00 G_M43362_IG37: mov r12, qword ptr [rbp-0x48] cmp r15, r12 sete dl movzx rdx, dl mov rdi, r13 mov rsi, r14 mov rax, 0xD1FFAB1E ; code for System.Text.Encoding:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this call [rax]System.Text.Encoding:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this xor eax, eax xor r13d, r13d ;; size=36 bbWeight=8 PerfScore 54.00 G_M43362_IG38: test r14, r14 je SHORT G_M43362_IG40 ;; size=5 bbWeight=1 PerfScore 1.25 G_M43362_IG39: mov word ptr [r14+0x24], r13w mov rax, rbx sub rax, qword ptr [rbp-0x50] mov rdi, rax shr rdi, 63 add rax, rdi sar rax, 1 mov dword ptr [r14+0x20], eax ;; size=29 bbWeight=0.50 PerfScore 2.88 G_M43362_IG40: mov rax, r15 sub rax, r12 ;; size=6 bbWeight=1 PerfScore 0.50 G_M43362_IG41: add rsp, 72 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25 G_M43362_IG42: mov dword ptr [rbp-0x2C], ecx mov rdi, gword ptr [r13+0x10] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Text.EncoderFallback:CreateFallbackBuffer():System.Text.EncoderFallbackBuffer:this ;; size=17 bbWeight=8 PerfScore 80.00 G_M43362_IG43: mov rcx, qword ptr [rbp-0x50] mov qword ptr [rax+0x18], rcx mov rdx, qword ptr [rbp-0x40] mov qword ptr [rax+0x20], rdx mov gword ptr [rbp-0x68], rax lea rdi, bword ptr [rax+0x08] mov rsi, r14 call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rbp-0x68] mov word ptr [rax+0x30], 1 mov byte ptr [rax+0x32], 0 xor edi, edi mov dword ptr [rax+0x28], edi mov ecx, dword ptr [rbp-0x2C] jmp G_M43362_IG06 ;; size=59 bbWeight=8 PerfScore 112.00 G_M43362_IG44: mov r12d, ecx mov rax, gword ptr [rbp-0x68] jmp G_M43362_IG07 ;; size=12 bbWeight=8 PerfScore 26.00 G_M43362_IG45: mov rdi, gword ptr [r13+0x10] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Text.EncoderFallback:CreateFallbackBuffer():System.Text.EncoderFallbackBuffer:this ;; size=14 bbWeight=2 PerfScore 18.00 G_M43362_IG46: mov rcx, qword ptr [rbp-0x50] mov qword ptr [rax+0x18], rcx mov rdx, qword ptr [rbp-0x40] mov qword ptr [rax+0x20], rdx mov gword ptr [rbp-0x68], rax lea rdi, bword ptr [rax+0x08] mov rsi, r14 call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rbp-0x68] mov word ptr [rax+0x30], 1 mov byte ptr [rax+0x32], 0 xor edi, edi mov dword ptr [rax+0x28], edi jmp G_M43362_IG56 ;; size=56 bbWeight=2 PerfScore 26.00 G_M43362_IG47: test r12d, r12d jle SHORT G_M43362_IG49 add rbx, -2 mov rax, gword ptr [rbp-0x68] test rax, rax jne G_M43362_IG56 test r14, r14 je G_M43362_IG54 ;; size=31 bbWeight=16 PerfScore 80.00 G_M43362_IG48: mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Text.Encoder:get_FallbackBuffer():System.Text.EncoderFallbackBuffer:this call [rax]System.Text.Encoder:get_FallbackBuffer():System.Text.EncoderFallbackBuffer:this jmp G_M43362_IG55 ;; size=20 bbWeight=8 PerfScore 44.00 G_M43362_IG49: lea rdx, [r15+0x01] mov rsi, qword ptr [rbp-0x38] cmp rdx, rsi jb SHORT G_M43362_IG50 mov rax, gword ptr [rbp-0x68] test rax, rax je SHORT G_M43362_IG52 cmp byte ptr [rax+0x32], 0 je SHORT G_M43362_IG52 mov rdi, rax mov gword ptr [rbp-0x68], rax mov rcx, qword ptr [rax] mov rcx, qword ptr [rcx+0x40] call [rcx+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this jmp SHORT G_M43362_IG53 ;; size=47 bbWeight=2 PerfScore 38.50 G_M43362_IG50: cmp byte ptr [r13+0x26], 0 je SHORT G_M43362_IG51 mov rdi, r15 mov r15, rdx mov edx, ecx sar edx, 8 mov byte ptr [rdi], dl mov rdx, r15 lea r15, [rdx+0x01] mov byte ptr [rdx], cl mov rax, gword ptr [rbp-0x68] jmp G_M43362_IG07 ;; size=38 bbWeight=2 PerfScore 22.00 G_M43362_IG51: mov rdi, r15 mov r15, rdx mov byte ptr [rdi], cl mov rdx, r15 lea r15, [rdx+0x01] mov edi, ecx sar edi, 8 mov byte ptr [rdx], dil mov rax, gword ptr [rbp-0x68] jmp G_M43362_IG07 ;; size=32 bbWeight=2 PerfScore 14.00 G_M43362_IG52: add rbx, -2 mov gword ptr [rbp-0x68], rax ;; size=8 bbWeight=2 PerfScore 2.50 G_M43362_IG53: cmp r15, qword ptr [rbp-0x48] sete dl movzx rdx, dl mov rdi, r13 mov rsi, r14 mov r8, 0xD1FFAB1E ; code for System.Text.Encoding:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this call [r8]System.Text.Encoding:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this jmp G_M43362_IG12 ;; size=34 bbWeight=2 PerfScore 18.00 G_M43362_IG54: mov rdi, gword ptr [r13+0x10] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Text.EncoderFallback:CreateFallbackBuffer():System.Text.EncoderFallbackBuffer:this ;; size=14 bbWeight=8 PerfScore 72.00 G_M43362_IG55: mov rcx, qword ptr [rbp-0x50] mov qword ptr [rax+0x18], rcx mov rdx, qword ptr [rbp-0x40] mov qword ptr [rax+0x20], rdx mov gword ptr [rbp-0x68], rax lea rdi, bword ptr [rax+0x08] mov rsi, r14 call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rbp-0x68] mov word ptr [rax+0x30], 1 mov byte ptr [rax+0x32], 0 xor edx, edx mov dword ptr [rax+0x28], edx ;; size=51 bbWeight=16 PerfScore 176.00 G_M43362_IG56: mov qword ptr [rbp-0x58], rbx lea rdx, [rbp-0x58] + mov gword ptr [rbp-0x68], rax mov rdi, rax mov esi, r12d - mov gword ptr [rbp-0x68], rax - mov rcx, qword ptr [rax] - mov rcx, qword ptr [rcx+0x48] - call [rcx+0x10]System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this + mov rcx, 0xD1FFAB1E ; code for System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this + cmp dword ptr [rdi], edi + call [rcx]System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this mov rbx, qword ptr [rbp-0x58] xor r12d, r12d mov rax, gword ptr [rbp-0x68] jmp G_M43362_IG07 - ;; size=44 bbWeight=8 PerfScore 114.00 + ;; size=48 bbWeight=8 PerfScore 108.00 G_M43362_IG57: mov rdi, gword ptr [r13+0x10] mov rcx, qword ptr [rdi] mov rcx, qword ptr [rcx+0x40] call [rcx+0x20]System.Text.EncoderFallback:CreateFallbackBuffer():System.Text.EncoderFallbackBuffer:this ;; size=14 bbWeight=2 PerfScore 18.00 G_M43362_IG58: mov rcx, qword ptr [rbp-0x50] mov qword ptr [rax+0x18], rcx mov rdx, qword ptr [rbp-0x40] mov qword ptr [rax+0x20], rdx mov gword ptr [rbp-0x68], rax lea rdi, bword ptr [rax+0x08] mov rsi, r14 call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rbp-0x68] mov word ptr [rax+0x30], 1 mov byte ptr [rax+0x32], 0 xor edx, edx mov gword ptr [rbp-0x68], rax mov dword ptr [rax+0x28], edx ;; size=55 bbWeight=2 PerfScore 24.00 G_M43362_IG59: mov qword ptr [rbp-0x58], rbx lea rdx, [rbp-0x58] mov rdi, gword ptr [rbp-0x68] mov esi, r12d - mov gword ptr [rbp-0x68], rdi - mov rcx, qword ptr [rdi] - mov rcx, qword ptr [rcx+0x48] - call [rcx+0x10]System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this + mov rcx, 0xD1FFAB1E ; code for System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this + cmp dword ptr [rdi], edi + call [rcx]System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this mov rbx, qword ptr [rbp-0x58] xor r12d, r12d mov edi, 1 mov dword ptr [rbp-0x30], edi mov rax, gword ptr [rbp-0x68] jmp G_M43362_IG07 - ;; size=53 bbWeight=4 PerfScore 65.00 + ;; size=53 bbWeight=4 PerfScore 58.00 G_M43362_IG60: mov rdi, 0xD1FFAB1E ; System.Char call CORINFO_HELP_NEWSFAST mov r13, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_RecursiveFallback():System.String call [rax]System.SR:get_Argument_RecursiveFallback():System.String mov r14, rax mov word ptr [r13+0x08], r12w mov rdi, 0xD1FFAB1E ; System.ArgumentException call CORINFO_HELP_NEWSFAST mov rbx, rax mov rsi, r13 mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object):System.String call [rax]System.SR:Format(System.String,System.Object):System.String mov r15, rax mov edi, 0x133E6 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rsi, r15 mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this call [rax]System.ArgumentException:.ctor(System.String,System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=127 bbWeight=0 PerfScore 0.00 G_M43362_IG61: mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_EncoderFallbackNotEmpty():System.String call [rax]System.SR:get_Argument_EncoderFallbackNotEmpty():System.String mov rbx, rax mov rdi, r13 mov rax, qword ptr [r13] mov rax, qword ptr [rax+0x48] call [rax]System.Text.Encoding:get_EncodingName():System.String:this mov r15, rax mov rdi, gword ptr [r14+0x08] test rdi, rdi je SHORT G_M43362_IG62 call System.Object:GetType():System.Type:this mov r14, rax jmp SHORT G_M43362_IG63 ;; size=50 bbWeight=0 PerfScore 0.00 G_M43362_IG62: xor r14, r14 ;; size=3 bbWeight=0 PerfScore 0.00 G_M43362_IG63: mov rdi, 0xD1FFAB1E ; System.ArgumentException call CORINFO_HELP_NEWSFAST mov r13, rax mov rdi, rbx mov rsi, r15 mov rdx, r14 mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object,System.Object):System.String call [rax]System.SR:Format(System.String,System.Object,System.Object):System.String mov rsi, rax mov rdi, r13 mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String):this call [rax]System.ArgumentException:.ctor(System.String):this mov rdi, r13 call CORINFO_HELP_THROW int3 ;; size=66 bbWeight=0 PerfScore 0.00 -; Total bytes of code 1845, prolog size 31, PerfScore 2185.25, instruction count 493, allocated bytes for code 1845 (MethodHash=9181569d) for method System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts) +; Total bytes of code 1853, prolog size 31, PerfScore 2166.25, instruction count 492, allocated bytes for code 1853 (MethodHash=9181569d) for method System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts) ```
4 (1.96 % of base) - System.Text.Encoding+EncodingCharBuffer:Fallback(ubyte[]):ubyte:this ```diff ; Assembly listing for method System.Text.Encoding+EncodingCharBuffer:Fallback(ubyte[]):ubyte:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 20, 11.50) ref -> rbx this class-hnd single-def ; V01 arg1 [V01,T01] ( 5, 3.50) ref -> r15 class-hnd single-def -; V02 loc0 [V02,T07] ( 2, 1 ) long -> r14 +; V02 loc0 [V02,T06] ( 2, 1 ) long -> r14 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ; V05 tmp2 [V05,T02] ( 4, 4 ) ref -> rdi class-hnd single-def "Inlining Arg" ; V06 tmp3 [V06,T03] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V07 tmp4 [V07,T04] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V08 cse0 [V08,T06] ( 3, 2.50) long -> r14 "CSE #01: aggressive" -; V09 rat0 [V09,T05] ( 3, 3 ) long -> rax "ReplaceWithLclVar is creating a new local variable" +; V07 cse0 [V07,T05] ( 3, 2.50) long -> r14 "CSE #01: aggressive" +; V08 rat0 [V08,T04] ( 3, 3 ) long -> rax "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 8 G_M8390_IG01: push rbp push r15 push r14 push rbx push rax lea rbp, [rsp+0x20] mov rbx, rdi mov r15, rsi ;; size=18 bbWeight=1 PerfScore 6.00 G_M8390_IG02: mov r14, qword ptr [rbx+0x20] test r14, r14 je SHORT G_M8390_IG05 ;; size=9 bbWeight=1 PerfScore 3.25 G_M8390_IG03: mov rdi, gword ptr [rbx+0x18] mov rdx, qword ptr [rbx+0x48] lea rcx, bword ptr [rbx+0x20] mov rsi, r15 - mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x48] - call [rax+0x08]System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong,byref):ubyte:this + mov rax, 0xD1FFAB1E ; code for System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong,byref):ubyte:this + cmp dword ptr [rdi], edi + call [rax]System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong,byref):ubyte:this test eax, eax jne SHORT G_M8390_IG06 mov edi, dword ptr [r15+0x08] sub qword ptr [rbx+0x48], rdi mov rdi, gword ptr [rbx+0x18] xor eax, eax mov qword ptr [rdi+0x18], rax mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x48] call [rax]System.Text.DecoderFallbackBuffer:Reset():this mov rdx, qword ptr [rbx+0x20] cmp rdx, qword ptr [rbx+0x28] sete dl movzx rdx, dl mov rsi, gword ptr [rbx+0x10] mov rdi, gword ptr [rbx+0x08] mov rax, 0xD1FFAB1E ; code for System.Text.Encoding:ThrowCharsOverflow(System.Text.DecoderNLS,ubyte):this cmp dword ptr [rdi], edi call [rax]System.Text.Encoding:ThrowCharsOverflow(System.Text.DecoderNLS,ubyte):this xor eax, eax - ;; size=94 bbWeight=0.50 PerfScore 22.50 + ;; size=98 bbWeight=0.50 PerfScore 22.12 G_M8390_IG04: add rsp, 8 pop rbx pop r14 pop r15 pop rbp ret ;; size=11 bbWeight=0.50 PerfScore 1.62 G_M8390_IG05: mov r14d, dword ptr [rbx+0x50] mov rdi, gword ptr [rbx+0x18] mov rdx, qword ptr [rbx+0x48] mov rsi, r15 mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x48] - call [rax+0x10]System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong):int:this + call [rax+0x08]System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong):int:this add eax, r14d mov dword ptr [rbx+0x50], eax jmp SHORT G_M8390_IG07 ;; size=33 bbWeight=0.50 PerfScore 8.25 G_M8390_IG06: mov rax, qword ptr [rbx+0x20] sub rax, r14 mov rcx, rax shr rcx, 63 add rax, rcx sar rax, 1 add dword ptr [rbx+0x50], eax ;; size=23 bbWeight=0.50 PerfScore 3.38 G_M8390_IG07: mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M8390_IG08: add rsp, 8 pop rbx pop r14 pop r15 pop rbp ret ;; size=11 bbWeight=0.50 PerfScore 1.62 -; Total bytes of code 204, prolog size 12, PerfScore 46.75, instruction count 68, allocated bytes for code 204 (MethodHash=8e1ddf39) for method System.Text.Encoding+EncodingCharBuffer:Fallback(ubyte[]):ubyte:this (FullOpts) +; Total bytes of code 208, prolog size 12, PerfScore 46.38, instruction count 68, allocated bytes for code 208 (MethodHash=8e1ddf39) for method System.Text.Encoding+EncodingCharBuffer:Fallback(ubyte[]):ubyte:this (FullOpts) ```
4 (0.61 % of base) - System.Text.UTF32Encoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this ```diff ; Assembly listing for method System.Text.UTF32Encoding:GetByteCount(ulong,int,System.Text.EncoderNLS):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; 11 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T09] ( 6, 2.50) ref -> r14 this class-hnd single-def ; V01 arg1 [V01,T00] ( 14,110 ) long -> rbx ; V02 arg2 [V02,T08] ( 3, 3 ) int -> rdx single-def ; V03 arg3 [V03,T07] ( 9, 15 ) ref -> r15 class-hnd single-def ; V04 loc0 [V04,T03] ( 3, 66 ) long -> r13 ;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref ; V06 loc2 [V06,T06] ( 5, 19 ) int -> r12 ; V07 loc3 [V07,T05] ( 8, 33.50) ushort -> [rbp-0x2C] -; V08 loc4 [V08,T04] ( 16, 57 ) ref -> [rbp-0x40] class-hnd +; V08 loc4 [V08,T04] ( 14, 41 ) ref -> [rbp-0x40] class-hnd ; V09 loc5 [V09 ] ( 6, 48 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op ; V10 loc6 [V10,T01] ( 11, 72 ) ushort -> rsi ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V12 tmp1 [V12,T02] ( 4, 68 ) int -> rsi "dup spill" ; V13 tmp2 [V13,T12] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" ; V14 tmp3 [V14,T16] ( 2, 0 ) ref -> rbx class-hnd exact single-def "impAppendStmt" ; V15 tmp4 [V15,T17] ( 2, 0 ) ref -> r14 class-hnd exact single-def "impAppendStmt" ; V16 tmp5 [V16,T13] ( 3, 0 ) ref -> rdi class-hnd single-def "dup spill" ;* V17 tmp6 [V17 ] ( 0, 0 ) ref -> zero-ref single-def ;* V18 tmp7 [V18 ] ( 0, 0 ) ref -> zero-ref single-def ;* V19 tmp8 [V19 ] ( 0, 0 ) ref -> zero-ref single-def ;* V20 tmp9 [V20 ] ( 0, 0 ) ref -> zero-ref ;* V21 tmp10 [V21 ] ( 0, 0 ) ref -> zero-ref ; V22 tmp11 [V22,T14] ( 3, 0 ) ref -> r15 ;* V23 tmp12 [V23 ] ( 0, 0 ) ref -> zero-ref single-def ;* V24 tmp13 [V24 ] ( 0, 0 ) ref -> zero-ref single-def ; V25 tmp14 [V25,T11] ( 5, 0 ) ref -> r15 ; V26 tmp15 [V26,T15] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" ;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V28 tmp17 [V28,T18] ( 2, 0 ) ref -> rdi class-hnd exact single-def "Inlining Arg" ; V29 tmp18 [V29,T10] ( 3, 3 ) ref -> rdi single-def "argument with side effect" ; V30 tmp19 [V30,T19] ( 2, 0 ) ref -> rbx single-def "argument with side effect" ; V31 tmp20 [V31,T20] ( 2, 0 ) ref -> rdx single-def "argument with side effect" ; V32 tmp21 [V32,T21] ( 2, 0 ) ref -> rsi single-def "argument with side effect" ; ; Lcl frame size = 24 G_M47975_IG01: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 24 lea rbp, [rsp+0x40] mov r14, rdi mov rbx, rsi mov r15, rcx ;; size=28 bbWeight=1 PerfScore 7.50 G_M47975_IG02: movsxd rdi, edx lea r13, [rbx+2*rdi] xor r12d, r12d xor eax, eax test r15, r15 je SHORT G_M47975_IG04 ;; size=17 bbWeight=1 PerfScore 2.50 G_M47975_IG03: movzx rax, word ptr [r15+0x24] mov dword ptr [rbp-0x2C], eax mov rdi, r15 mov rcx, 0xD1FFAB1E ; code for System.Text.Encoder:get_FallbackBuffer():System.Text.EncoderFallbackBuffer:this call [rcx]System.Text.Encoder:get_FallbackBuffer():System.Text.EncoderFallbackBuffer:this mov rdi, rax mov gword ptr [rbp-0x40], rax mov rcx, qword ptr [rax] mov rcx, qword ptr [rcx+0x48] call [rcx]System.Text.EncoderFallbackBuffer:get_Remaining():int:this test eax, eax jle SHORT G_M47975_IG05 jmp G_M47975_IG21 ;; size=48 bbWeight=0.50 PerfScore 9.00 G_M47975_IG04: mov dword ptr [rbp-0x2C], eax mov rdi, gword ptr [r14+0x10] mov rcx, qword ptr [rdi] mov rcx, qword ptr [rcx+0x40] call [rcx+0x20]System.Text.EncoderFallback:CreateFallbackBuffer():System.Text.EncoderFallbackBuffer:this mov r14, rax mov gword ptr [rbp-0x40], r14 ;; size=24 bbWeight=0.50 PerfScore 5.62 G_M47975_IG05: mov r14, gword ptr [rbp-0x40] mov qword ptr [r14+0x18], rbx mov qword ptr [r14+0x20], r13 lea rdi, bword ptr [r14+0x08] mov rsi, r15 call CORINFO_HELP_ASSIGN_REF mov word ptr [r14+0x30], 0 mov byte ptr [r14+0x32], 0 xor edi, edi mov dword ptr [r14+0x28], edi mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Text.EncoderFallbackBuffer:InternalGetNextChar():ushort:this call [rax]System.Text.EncoderFallbackBuffer:InternalGetNextChar():ushort:this mov esi, eax test esi, esi je SHORT G_M47975_IG10 ;; size=63 bbWeight=1 PerfScore 13.00 G_M47975_IG06: test esi, esi jne SHORT G_M47975_IG07 movzx rsi, word ptr [rbx] add rbx, 2 ;; size=11 bbWeight=2 PerfScore 7.00 G_M47975_IG07: mov eax, dword ptr [rbp-0x2C] test eax, eax je SHORT G_M47975_IG16 add esi, -0xDC00 cmp esi, 0x3FF ja G_M47975_IG18 xor eax, eax mov dword ptr [rbp-0x2C], eax ;; size=30 bbWeight=2 PerfScore 10.00 G_M47975_IG08: add r12d, 4 ;; size=4 bbWeight=8 PerfScore 2.00 G_M47975_IG09: mov rdi, r14 mov rcx, 0xD1FFAB1E ; code for System.Text.EncoderFallbackBuffer:InternalGetNextChar():ushort:this call [rcx]System.Text.EncoderFallbackBuffer:InternalGetNextChar():ushort:this mov esi, eax test esi, esi jne SHORT G_M47975_IG06 ;; size=21 bbWeight=16 PerfScore 80.00 G_M47975_IG10: cmp rbx, r13 jb SHORT G_M47975_IG06 ;; size=5 bbWeight=64 PerfScore 80.00 G_M47975_IG11: test r15, r15 je SHORT G_M47975_IG13 ;; size=5 bbWeight=8 PerfScore 10.00 G_M47975_IG12: cmp byte ptr [r15+0x26], 0 je SHORT G_M47975_IG14 ;; size=7 bbWeight=2 PerfScore 8.00 G_M47975_IG13: mov ecx, dword ptr [rbp-0x2C] test ecx, ecx jg SHORT G_M47975_IG19 ;; size=7 bbWeight=4 PerfScore 9.00 G_M47975_IG14: test r12d, r12d jl G_M47975_IG20 mov eax, r12d ;; size=12 bbWeight=1 PerfScore 1.50 G_M47975_IG15: add rsp, 24 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25 G_M47975_IG16: lea edx, [rsi-0xD800] cmp edx, 0x3FF ja SHORT G_M47975_IG17 mov dword ptr [rbp-0x2C], esi jmp SHORT G_M47975_IG09 ;; size=19 bbWeight=8 PerfScore 38.00 G_M47975_IG17: lea edx, [rsi-0xDC00] cmp edx, 0x3FF mov dword ptr [rbp-0x2C], eax ja SHORT G_M47975_IG08 mov qword ptr [rbp-0x38], rbx lea rdx, [rbp-0x38] mov rdi, r14 - mov rcx, qword ptr [r14] - mov rcx, qword ptr [rcx+0x48] - call [rcx+0x10]System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this + mov rcx, 0xD1FFAB1E ; code for System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this + call [rcx]System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this mov rbx, qword ptr [rbp-0x38] jmp G_M47975_IG09 - ;; size=47 bbWeight=8 PerfScore 116.00 + ;; size=49 bbWeight=8 PerfScore 86.00 G_M47975_IG18: add rbx, -2 mov ecx, eax ;; size=6 bbWeight=2 PerfScore 1.00 G_M47975_IG19: mov qword ptr [rbp-0x38], rbx lea rdx, [rbp-0x38] mov rdi, r14 mov esi, ecx - mov rax, qword ptr [r14] - mov rax, qword ptr [rax+0x48] - call [rax+0x10]System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this + mov rax, 0xD1FFAB1E ; code for System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this + call [rax]System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this mov rbx, qword ptr [rbp-0x38] xor ecx, ecx xor edi, edi mov dword ptr [rbp-0x2C], edi jmp G_M47975_IG09 - ;; size=39 bbWeight=8 PerfScore 108.00 + ;; size=41 bbWeight=8 PerfScore 78.00 G_M47975_IG20: mov rdi, 0xD1FFAB1E ; System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov r15, rax mov edi, 975 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_ArgumentOutOfRange_GetByteCountOverflow():System.String call [rax]System.SR:get_ArgumentOutOfRange_GetByteCountOverflow():System.String mov rdx, rax mov rsi, rbx mov rdi, r15 mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this call [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.String):this mov rdi, r15 call CORINFO_HELP_THROW int3 ;; size=83 bbWeight=0 PerfScore 0.00 G_M47975_IG21: mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_EncoderFallbackNotEmpty():System.String call [rax]System.SR:get_Argument_EncoderFallbackNotEmpty():System.String mov rbx, rax cmp gword ptr [r14+0x08], 0 jne SHORT G_M47975_IG22 mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Text.Encoding:GetDataItem():this call [rax]System.Text.Encoding:GetDataItem():this ;; size=37 bbWeight=0 PerfScore 0.00 G_M47975_IG22: mov rdi, gword ptr [r14+0x08] mov r14, gword ptr [rdi+0x20] mov rdi, gword ptr [r15+0x08] test rdi, rdi je SHORT G_M47975_IG23 call System.Object:GetType():System.Type:this mov rdi, rax mov esi, 1 mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetCachedName(int):System.String:this call [rax]System.RuntimeType:GetCachedName(int):System.String:this mov r15, rax jmp SHORT G_M47975_IG24 ;; size=47 bbWeight=0 PerfScore 0.00 G_M47975_IG23: xor r15, r15 ;; size=3 bbWeight=0 PerfScore 0.00 G_M47975_IG24: mov rdi, 0xD1FFAB1E ; '' test r15, r15 cmove r15, rdi mov rdi, 0xD1FFAB1E ; System.ArgumentException call CORINFO_HELP_NEWSFAST mov r13, rax mov rdi, rbx mov rsi, r14 mov rdx, r15 mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object,System.Object):System.String call [rax]System.SR:Format(System.String,System.Object,System.Object):System.String mov rsi, rax mov rdi, r13 mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String):this call [rax]System.ArgumentException:.ctor(System.String):this mov rdi, r13 call CORINFO_HELP_THROW int3 ;; size=83 bbWeight=0 PerfScore 0.00 -; Total bytes of code 661, prolog size 19, PerfScore 512.38, instruction count 179, allocated bytes for code 661 (MethodHash=802d4498) for method System.Text.UTF32Encoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this (FullOpts) +; Total bytes of code 665, prolog size 19, PerfScore 452.38, instruction count 177, allocated bytes for code 665 (MethodHash=802d4498) for method System.Text.UTF32Encoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this (FullOpts) ```

Larger list of diffs: https://gist.github.com/MihuBot/ae96e922c14b0bdb69c483a6bc0fb32f

MihuBot commented 3 weeks ago

Top method improvements

-50 (-2.37 % of base) - System.Text.UnicodeEncoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this ```diff ; Assembly listing for method System.Text.UnicodeEncoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data ; 0 inlinees with PGO data; 11 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T11] ( 13, 17 ) ref -> r14 this class-hnd single-def ; V01 arg1 [V01,T03] ( 38, 47 ) long -> rbx ; V02 arg2 [V02,T47] ( 3, 3 ) int -> rdx single-def -; V03 arg3 [V03,T05] ( 28, 40.50) long -> [rbp-0x30] +; V03 arg3 [V03,T04] ( 28, 40.50) long -> r15 ; V04 arg4 [V04,T48] ( 3, 3 ) int -> r8 single-def ; V05 arg5 [V05,T46] ( 4, 3 ) ref -> r9 class-hnd single-def ; V06 loc0 [V06,T08] ( 23, 22.50) ref -> r13 class-hnd exact single-def -; V07 loc1 [V07,T12] ( 14, 18.50) int -> [rbp-0x34] -; V08 loc2 [V08,T07] ( 24, 35 ) ushort -> [rbp-0x38] -; V09 loc3 [V09,T04] ( 38, 46.50) ref -> [rbp-0x70] class-hnd -; V10 loc4 [V10 ] ( 15, 21 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op -; V11 loc5 [V11,T20] ( 6, 12 ) long -> [rbp-0x48] spill-single-def -; V12 loc6 [V12,T19] ( 9, 14 ) long -> [rbp-0x50] spill-single-def -; V13 loc7 [V13,T32] ( 8, 9.50) long -> [rbp-0x58] spill-single-def -; V14 loc8 [V14,T52] ( 5, 3.50) long -> [rbp-0x60] spill-single-def +; V07 loc1 [V07,T12] ( 14, 18.50) int -> [rbp-0x2C] +; V08 loc2 [V08,T07] ( 24, 35 ) ushort -> [rbp-0x30] +; V09 loc3 [V09,T05] ( 35, 40.50) ref -> [rbp-0x60] class-hnd +; V10 loc4 [V10 ] ( 15, 21 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op +; V11 loc5 [V11,T20] ( 6, 12 ) long -> [rbp-0x40] spill-single-def +; V12 loc6 [V12,T19] ( 9, 14 ) long -> [rbp-0x48] spill-single-def +; V13 loc7 [V13,T32] ( 8, 9.50) long -> [rbp-0x50] spill-single-def +; V14 loc8 [V14,T52] ( 5, 3.50) long -> [rbp-0x58] spill-single-def ; V15 loc9 [V15,T09] ( 10, 20 ) ushort -> r12 ; V16 loc10 [V16,T10] ( 3, 20 ) long -> rdi ; V17 loc11 [V17,T00] ( 7, 70 ) long -> rbx ; V18 loc12 [V18,T02] ( 5, 52 ) long -> r15 ; V19 loc13 [V19,T06] ( 5, 40 ) long -> r10 -; V20 loc14 [V20,T37] ( 3, 6 ) ref -> [rbp-0x78] class-hnd +; V20 loc14 [V20,T37] ( 3, 6 ) ref -> [rbp-0x68] class-hnd ; V21 loc15 [V21,T38] ( 3, 6 ) ref -> r12 class-hnd -; V22 loc16 [V22,T39] ( 3, 6 ) ref -> [rbp-0x80] class-hnd -; V23 loc17 [V23,T59] ( 3, 1.50) ref -> [rbp-0x88] class-hnd +; V22 loc16 [V22,T39] ( 3, 6 ) ref -> [rbp-0x70] class-hnd +; V23 loc17 [V23,T59] ( 3, 1.50) ref -> [rbp-0x78] class-hnd ;# V24 OutArgs [V24 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V25 tmp1 [V25,T24] ( 3, 12 ) long -> rdi "impSpillLclRefs" ; V26 tmp2 [V26,T25] ( 3, 12 ) long -> rdi "impSpillLclRefs" ; V27 tmp3 [V27,T13] ( 4, 16 ) ref -> rax class-hnd exact "dup spill" ; V28 tmp4 [V28,T33] ( 2, 8 ) int -> rax "impAppendStmt" ; V29 tmp5 [V29,T40] ( 3, 6 ) ref -> rdx ; V30 tmp6 [V30,T14] ( 4, 16 ) ref -> rax class-hnd exact "dup spill" ; V31 tmp7 [V31,T26] ( 3, 12 ) long -> rdi "impSpillLclRefs" ; V32 tmp8 [V32,T15] ( 4, 16 ) ref -> rax class-hnd exact "dup spill" ; V33 tmp9 [V33,T34] ( 2, 8 ) int -> rax "impAppendStmt" ; V34 tmp10 [V34,T41] ( 3, 6 ) ref -> rax ; V35 tmp11 [V35,T16] ( 4, 16 ) ref -> rax class-hnd exact "dup spill" ; V36 tmp12 [V36,T17] ( 4, 16 ) ref -> rax class-hnd exact "dup spill" ; V37 tmp13 [V37,T35] ( 2, 8 ) int -> rax "impAppendStmt" ; V38 tmp14 [V38,T42] ( 3, 6 ) ref -> rdx ; V39 tmp15 [V39,T18] ( 4, 16 ) ref -> rax class-hnd exact "dup spill" ; V40 tmp16 [V40,T27] ( 3, 12 ) long -> rdi "impSpillLclRefs" ; V41 tmp17 [V41,T28] ( 3, 12 ) long -> rdi "impSpillLclRefs" ;* V42 tmp18 [V42 ] ( 0, 0 ) long -> zero-ref ; V43 tmp19 [V43,T51] ( 2, 4 ) long -> rdi ; V44 tmp20 [V44,T43] ( 3, 6 ) long -> rsi ;* V45 tmp21 [V45 ] ( 0, 0 ) long -> zero-ref ; V46 tmp22 [V46,T53] ( 3, 3 ) ref -> rax class-hnd exact single-def "dup spill" ; V47 tmp23 [V47,T57] ( 2, 2 ) int -> rax "impAppendStmt" ; V48 tmp24 [V48,T60] ( 3, 1.50) ref -> rcx ; V49 tmp25 [V49,T49] ( 4, 4 ) ref -> rax class-hnd exact single-def "dup spill" ; V50 tmp26 [V50,T58] ( 2, 2 ) int -> rax "impAppendStmt" ; V51 tmp27 [V51,T61] ( 3, 1.50) ref -> rdx ; V52 tmp28 [V52,T50] ( 4, 4 ) ref -> rax class-hnd exact single-def "dup spill" ; V53 tmp29 [V53,T21] ( 3, 12 ) ref -> rdi "argument with side effect" ; V54 tmp30 [V54,T22] ( 3, 12 ) ref -> rdi "argument with side effect" ; V55 tmp31 [V55,T23] ( 3, 12 ) ref -> rdi "argument with side effect" ; V56 tmp32 [V56,T54] ( 3, 3 ) ref -> rdi single-def "argument with side effect" ; V57 tmp33 [V57,T55] ( 3, 3 ) ref -> rdi single-def "argument with side effect" ; V58 cse0 [V58,T44] ( 3, 6 ) long -> rsi "CSE #02: conservative" -; V59 cse1 [V59,T62] ( 3, 1.50) long -> [rbp-0x68] spill-single-def "CSE #17: conservative" -; V60 cse2 [V60,T63] ( 3, 1.50) long -> r15 "CSE #19: conservative" -; V61 cse3 [V61,T31] ( 5, 10 ) int -> r11 "CSE #07: moderate" -; V62 cse4 [V62,T01] ( 5, 64 ) long -> rsi "CSE #04: aggressive" -; V63 rat0 [V63,T36] ( 4, 7 ) ref -> r13 "replacement local" -; V64 rat1 [V64,T56] ( 3, 2 ) long -> rdi "CSE for expectedClsNode" -; V65 rat2 [V65,T29] ( 3, 12 ) long -> rsi "ReplaceWithLclVar is creating a new local variable" -; V66 rat3 [V66,T30] ( 3, 12 ) long -> rdi "ReplaceWithLclVar is creating a new local variable" -; V67 rat4 [V67,T45] ( 3, 6 ) long -> rax "ReplaceWithLclVar is creating a new local variable" +; V59 cse1 [V59,T31] ( 5, 10 ) int -> r11 "CSE #07: moderate" +; V60 cse2 [V60,T01] ( 5, 64 ) long -> rsi "CSE #04: aggressive" +; V61 rat0 [V61,T36] ( 4, 7 ) ref -> r13 "replacement local" +; V62 rat1 [V62,T56] ( 3, 2 ) long -> rdi "CSE for expectedClsNode" +; V63 rat2 [V63,T29] ( 3, 12 ) long -> rsi "ReplaceWithLclVar is creating a new local variable" +; V64 rat3 [V64,T30] ( 3, 12 ) long -> rdi "ReplaceWithLclVar is creating a new local variable" +; V65 rat4 [V65,T45] ( 3, 6 ) long -> rax "ReplaceWithLclVar is creating a new local variable" ; -; Lcl frame size = 104 +; Lcl frame size = 88 G_M8858_IG01: push rbp push r15 push r14 push r13 push r12 push rbx - sub rsp, 104 - lea rbp, [rsp+0x90] + sub rsp, 88 + lea rbp, [rsp+0x80] mov r14, rdi mov rbx, rsi mov r15, rcx ;; size=31 bbWeight=1 PerfScore 7.50 G_M8858_IG02: mov r13, r9 test r13, r13 je SHORT G_M8858_IG04 ;; size=8 bbWeight=1 PerfScore 1.50 G_M8858_IG03: mov rdi, 0xD1FFAB1E ; System.Text.UnicodeEncoding+Decoder cmp qword ptr [r13], rdi jne G_M8858_IG71 ;; size=20 bbWeight=0.50 PerfScore 2.12 G_M8858_IG04: mov r12d, -1 xor eax, eax test r13, r13 je SHORT G_M8858_IG06 ;; size=13 bbWeight=1 PerfScore 1.75 G_M8858_IG05: mov r12d, dword ptr [r13+0x30] movzx rax, word ptr [r13+0x2E] ;; size=9 bbWeight=0.50 PerfScore 2.00 G_M8858_IG06: xor rcx, rcx - mov gword ptr [rbp-0x70], rcx + mov gword ptr [rbp-0x60], rcx movsxd rdx, edx add rdx, rbx - mov qword ptr [rbp-0x48], rdx + mov qword ptr [rbp-0x40], rdx movsxd rdi, r8d lea r8, [r15+2*rdi] - mov qword ptr [rbp-0x50], r8 + mov qword ptr [rbp-0x48], r8 mov r9, rbx - mov qword ptr [rbp-0x58], r9 - mov qword ptr [rbp-0x60], r15 + mov qword ptr [rbp-0x50], r9 + mov qword ptr [rbp-0x58], r15 cmp r9, rdx jae G_M8858_IG26 ;; size=47 bbWeight=1 PerfScore 8.00 G_M8858_IG07: movzx rdi, byte ptr [r14+0x26] xor edi, 1 je G_M8858_IG16 ;; size=14 bbWeight=4 PerfScore 13.00 G_M8858_IG08: test r15b, 7 jne G_M8858_IG16 cmp r12d, -1 jne G_M8858_IG16 test eax, eax jne G_M8858_IG16 lea rdi, [rbx-0x07] mov rsi, r8 sub rsi, r15 mov r11, rsi shr r11, 63 add rsi, r11 sar rsi, 1 mov r11, rdx sub r11, rbx sar r11, 1 cmp rsi, r11 jg SHORT G_M8858_IG09 add rsi, rsi jmp SHORT G_M8858_IG10 align [0 bytes for IG11] ;; size=70 bbWeight=2 PerfScore 21.50 G_M8858_IG09: mov rsi, rdx sub rsi, rbx ;; size=6 bbWeight=2 PerfScore 1.00 G_M8858_IG10: add rdi, rsi cmp rbx, rdi jae G_M8858_IG15 ;; size=12 bbWeight=2 PerfScore 3.00 G_M8858_IG11: mov rsi, qword ptr [rbx] mov r11, 0xD1FFAB1E test rsi, r11 je SHORT G_M8858_IG14 ;; size=18 bbWeight=16 PerfScore 56.00 G_M8858_IG12: mov r11, 0xD1FFAB1E and r11, rsi mov r10, 0xD1FFAB1E xor r10, r11 mov r11, 0xD1FFAB1E test r10, r11 je SHORT G_M8858_IG13 mov r11, 0xD1FFAB1E test r10, r11 je SHORT G_M8858_IG13 test r10d, -0x10000 je SHORT G_M8858_IG13 movzx r10, r10w test r10d, r10d jne SHORT G_M8858_IG14 ;; size=74 bbWeight=8 PerfScore 54.00 G_M8858_IG13: mov r10, 0xD1FFAB1E and r10, rsi mov r11, 0xD1FFAB1E cmp r10, r11 jne SHORT G_M8858_IG15 ;; size=28 bbWeight=8 PerfScore 16.00 G_M8858_IG14: mov qword ptr [r15], rsi add rbx, 8 add r15, 8 cmp rbx, rdi jb G_M8858_IG11 ;; size=20 bbWeight=16 PerfScore 44.00 G_M8858_IG15: cmp rbx, rdx - mov rdx, qword ptr [rbp-0x48] - mov r8, qword ptr [rbp-0x50] + mov rdx, qword ptr [rbp-0x40] + mov r8, qword ptr [rbp-0x48] jae G_M8858_IG26 ;; size=17 bbWeight=2 PerfScore 6.50 G_M8858_IG16: test r12d, r12d jge SHORT G_M8858_IG18 ;; size=5 bbWeight=4 PerfScore 5.00 G_M8858_IG17: mov rdi, rbx lea rbx, [rdi+0x01] movzx r12, byte ptr [rdi] jmp G_M8858_IG25 ;; size=16 bbWeight=2 PerfScore 9.50 G_M8858_IG18: movzx r11, byte ptr [r14+0x26] test r11d, r11d je SHORT G_M8858_IG19 mov rdi, rbx lea rbx, [rdi+0x01] shl r12d, 8 movzx rdi, byte ptr [rdi] or edi, r12d movzx r12, di jmp SHORT G_M8858_IG20 ;; size=34 bbWeight=2 PerfScore 18.00 G_M8858_IG19: mov rdi, rbx lea rbx, [rdi+0x01] movzx rdi, byte ptr [rdi] shl edi, 8 or edi, r12d movzx r12, di ;; size=21 bbWeight=2 PerfScore 7.50 G_M8858_IG20: - mov dword ptr [rbp-0x34], -1 + mov dword ptr [rbp-0x2C], -1 mov edi, r12d sub edi, 0xD800 cmp edi, 0x7FF ja G_M8858_IG45 cmp r12d, 0xDBFF jg SHORT G_M8858_IG21 - mov dword ptr [rbp-0x38], eax + mov dword ptr [rbp-0x30], eax test eax, eax jle G_M8858_IG44 test r11d, r11d je G_M8858_IG37 mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 2 call CORINFO_HELP_NEWARR_1_VC - mov ecx, dword ptr [rbp-0x38] + mov ecx, dword ptr [rbp-0x30] mov edi, ecx sar edi, 8 mov byte ptr [rax+0x10], dil mov byte ptr [rax+0x11], cl jmp G_M8858_IG38 ;; size=97 bbWeight=2 PerfScore 29.50 G_M8858_IG21: - mov dword ptr [rbp-0x38], eax + mov dword ptr [rbp-0x30], eax test eax, eax jne SHORT G_M8858_IG22 test r11d, r11d je G_M8858_IG31 mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 2 call CORINFO_HELP_NEWARR_1_VC mov edi, r12d sar edi, 8 mov byte ptr [rax+0x10], dil mov byte ptr [rax+0x11], r12b mov r12, rax jmp G_M8858_IG32 ;; size=58 bbWeight=2 PerfScore 20.00 G_M8858_IG22: mov rdi, r8 sub rdi, r15 mov r11, rdi shr r11, 63 add rdi, r11 sar rdi, 1 cmp rdi, 2 jl G_M8858_IG53 mov rdi, r15 lea r15, [rdi+0x02] - mov eax, dword ptr [rbp-0x38] + mov eax, dword ptr [rbp-0x30] mov word ptr [rdi], ax ;; size=42 bbWeight=2 PerfScore 12.00 G_M8858_IG23: xor eax, eax ;; size=2 bbWeight=2 PerfScore 0.50 G_M8858_IG24: cmp r15, r8 jae SHORT G_M8858_IG30 mov rdi, r15 lea r15, [rdi+0x02] mov word ptr [rdi], r12w - mov r8, qword ptr [rbp-0x50] - mov r12d, dword ptr [rbp-0x34] + mov r8, qword ptr [rbp-0x48] + mov r12d, dword ptr [rbp-0x2C] ;; size=24 bbWeight=2 PerfScore 10.00 G_M8858_IG25: cmp rbx, rdx jb G_M8858_IG07 ;; size=9 bbWeight=4 PerfScore 5.00 G_M8858_IG26: test r13, r13 je SHORT G_M8858_IG28 ;; size=5 bbWeight=1 PerfScore 1.25 G_M8858_IG27: cmp byte ptr [r13+0x2C], 0 je SHORT G_M8858_IG29 ;; size=7 bbWeight=0.50 PerfScore 2.00 G_M8858_IG28: - mov dword ptr [rbp-0x38], eax + mov dword ptr [rbp-0x30], eax test eax, eax jle G_M8858_IG61 cmp byte ptr [r14+0x26], 0 je G_M8858_IG55 mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 2 call CORINFO_HELP_NEWARR_1_VC - mov ecx, dword ptr [rbp-0x38] + mov ecx, dword ptr [rbp-0x30] mov edi, ecx sar edi, 8 mov byte ptr [rax+0x10], dil - mov dword ptr [rbp-0x38], ecx + mov dword ptr [rbp-0x30], ecx mov byte ptr [rax+0x11], cl jmp G_M8858_IG56 ;; size=65 bbWeight=0.50 PerfScore 7.25 G_M8858_IG29: - mov dword ptr [rbp-0x38], eax + mov dword ptr [rbp-0x30], eax jmp G_M8858_IG68 ;; size=8 bbWeight=0.25 PerfScore 0.75 G_M8858_IG30: - mov dword ptr [rbp-0x38], eax - mov r8, qword ptr [rbp-0x50] + mov dword ptr [rbp-0x30], eax + mov r8, qword ptr [rbp-0x48] jmp G_M8858_IG53 ;; size=12 bbWeight=1 PerfScore 4.00 G_M8858_IG31: mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 2 call CORINFO_HELP_NEWARR_1_VC mov byte ptr [rax+0x10], r12b sar r12d, 8 mov byte ptr [rax+0x11], r12b mov r12, rax ;; size=35 bbWeight=2 PerfScore 8.50 G_M8858_IG32: - mov rax, gword ptr [rbp-0x70] + mov rax, gword ptr [rbp-0x60] test rax, rax jne SHORT G_M8858_IG35 test r13, r13 je SHORT G_M8858_IG33 mov rdi, r13 mov rax, 0xD1FFAB1E ; code for System.Text.Decoder:get_FallbackBuffer():System.Text.DecoderFallbackBuffer:this call [rax]System.Text.Decoder:get_FallbackBuffer():System.Text.DecoderFallbackBuffer:this jmp SHORT G_M8858_IG34 ;; size=31 bbWeight=2 PerfScore 18.00 G_M8858_IG33: mov rdi, gword ptr [r14+0x18] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Text.DecoderFallback:CreateFallbackBuffer():System.Text.DecoderFallbackBuffer:this ;; size=14 bbWeight=2 PerfScore 18.00 G_M8858_IG34: - mov r8, qword ptr [rbp-0x58] + mov r8, qword ptr [rbp-0x50] mov qword ptr [rax+0x18], r8 - mov r9, qword ptr [rbp-0x50] + mov r9, qword ptr [rbp-0x48] mov qword ptr [rax+0x20], r9 ;; size=16 bbWeight=2 PerfScore 8.00 G_M8858_IG35: - mov qword ptr [rbp-0x40], r15 - lea rcx, [rbp-0x40] + mov qword ptr [rbp-0x38], r15 + lea rcx, [rbp-0x38] + mov gword ptr [rbp-0x60], rax mov rdi, rax mov rsi, r12 mov rdx, rbx - mov gword ptr [rbp-0x70], rax - mov r10, qword ptr [rax] - mov r10, qword ptr [r10+0x48] - call [r10+0x08]System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong,byref):ubyte:this - mov r15, qword ptr [rbp-0x40] + mov r10, 0xD1FFAB1E ; code for System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong,byref):ubyte:this + cmp dword ptr [rdi], edi + call [r10]System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong,byref):ubyte:this + mov r15, qword ptr [rbp-0x38] test eax, eax - mov rdx, qword ptr [rbp-0x48] + mov rdx, qword ptr [rbp-0x40] je G_M8858_IG52 - ;; size=48 bbWeight=2 PerfScore 27.00 + ;; size=52 bbWeight=2 PerfScore 25.50 G_M8858_IG36: - mov eax, dword ptr [rbp-0x38] - mov r8, qword ptr [rbp-0x50] - mov r12d, dword ptr [rbp-0x34] + mov eax, dword ptr [rbp-0x30] + mov r8, qword ptr [rbp-0x48] + mov r12d, dword ptr [rbp-0x2C] jmp G_M8858_IG25 ;; size=16 bbWeight=1 PerfScore 5.00 G_M8858_IG37: mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 2 call CORINFO_HELP_NEWARR_1_VC - mov ecx, dword ptr [rbp-0x38] + mov ecx, dword ptr [rbp-0x30] mov byte ptr [rax+0x10], cl - mov dword ptr [rbp-0x38], ecx + mov dword ptr [rbp-0x30], ecx mov edi, ecx sar edi, 8 mov byte ptr [rax+0x11], dil - mov gword ptr [rbp-0x78], rax - mov rax, gword ptr [rbp-0x78] - mov ecx, dword ptr [rbp-0x38] + mov gword ptr [rbp-0x68], rax + mov rax, gword ptr [rbp-0x68] + mov ecx, dword ptr [rbp-0x30] ;; size=49 bbWeight=2 PerfScore 18.50 G_M8858_IG38: - mov rdx, gword ptr [rbp-0x70] + mov rdx, gword ptr [rbp-0x60] test rdx, rdx jne SHORT G_M8858_IG39 test r13, r13 je SHORT G_M8858_IG40 - mov dword ptr [rbp-0x38], ecx - mov gword ptr [rbp-0x78], rax + mov dword ptr [rbp-0x30], ecx + mov gword ptr [rbp-0x68], rax mov rdi, r13 mov rdx, 0xD1FFAB1E ; code for System.Text.Decoder:get_FallbackBuffer():System.Text.DecoderFallbackBuffer:this call [rdx]System.Text.Decoder:get_FallbackBuffer():System.Text.DecoderFallbackBuffer:this mov rdx, rax jmp SHORT G_M8858_IG41 ;; size=41 bbWeight=2 PerfScore 22.50 G_M8858_IG39: - mov dword ptr [rbp-0x38], ecx + mov dword ptr [rbp-0x30], ecx jmp SHORT G_M8858_IG42 ;; size=5 bbWeight=1 PerfScore 3.00 G_M8858_IG40: - mov dword ptr [rbp-0x38], ecx - mov gword ptr [rbp-0x78], rax + mov dword ptr [rbp-0x30], ecx + mov gword ptr [rbp-0x68], rax mov rdi, gword ptr [r14+0x18] mov rdx, qword ptr [rdi] mov rdx, qword ptr [rdx+0x40] call [rdx+0x20]System.Text.DecoderFallback:CreateFallbackBuffer():System.Text.DecoderFallbackBuffer:this mov rdx, rax ;; size=24 bbWeight=2 PerfScore 22.50 G_M8858_IG41: mov rax, rdx - mov r8, qword ptr [rbp-0x58] + mov r8, qword ptr [rbp-0x50] mov qword ptr [rax+0x18], r8 - mov r9, qword ptr [rbp-0x50] + mov r9, qword ptr [rbp-0x48] mov qword ptr [rax+0x20], r9 mov rdx, rax - mov rax, gword ptr [rbp-0x78] + mov rax, gword ptr [rbp-0x68] ;; size=26 bbWeight=2 PerfScore 11.00 G_M8858_IG42: - mov qword ptr [rbp-0x40], r15 - lea rcx, [rbp-0x40] - mov gword ptr [rbp-0x70], rdx + mov qword ptr [rbp-0x38], r15 + lea rcx, [rbp-0x38] + mov gword ptr [rbp-0x60], rdx mov rdi, rdx mov rsi, rax mov rdx, rbx - mov r15, gword ptr [rbp-0x70] - mov rax, qword ptr [r15] - mov rax, qword ptr [rax+0x48] - call [rax+0x08]System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong,byref):ubyte:this - mov rdi, qword ptr [rbp-0x40] - mov rcx, rdi + mov rax, 0xD1FFAB1E ; code for System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong,byref):ubyte:this + cmp dword ptr [rdi], edi + call [rax]System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong,byref):ubyte:this + mov r15, qword ptr [rbp-0x38] test eax, eax - mov r15, rcx - mov rdx, qword ptr [rbp-0x48] + mov rdx, qword ptr [rbp-0x40] je G_M8858_IG52 - ;; size=57 bbWeight=2 PerfScore 30.00 + ;; size=51 bbWeight=2 PerfScore 25.50 G_M8858_IG43: - mov r8, qword ptr [rbp-0x50] + mov r8, qword ptr [rbp-0x48] ;; size=4 bbWeight=1 PerfScore 1.00 G_M8858_IG44: mov eax, r12d - mov r12d, dword ptr [rbp-0x34] + mov r12d, dword ptr [rbp-0x2C] jmp G_M8858_IG25 ;; size=12 bbWeight=2 PerfScore 6.50 G_M8858_IG45: - mov dword ptr [rbp-0x38], eax + mov dword ptr [rbp-0x30], eax test eax, eax - mov eax, dword ptr [rbp-0x38] + mov eax, dword ptr [rbp-0x30] jle G_M8858_IG24 test r11d, r11d je SHORT G_M8858_IG46 - mov dword ptr [rbp-0x38], eax + mov dword ptr [rbp-0x30], eax mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 2 call CORINFO_HELP_NEWARR_1_VC - mov ecx, dword ptr [rbp-0x38] + mov ecx, dword ptr [rbp-0x30] mov edi, ecx sar edi, 8 mov byte ptr [rax+0x10], dil - mov dword ptr [rbp-0x38], ecx + mov dword ptr [rbp-0x30], ecx mov byte ptr [rax+0x11], cl jmp SHORT G_M8858_IG47 ;; size=62 bbWeight=2 PerfScore 27.50 G_M8858_IG46: - mov dword ptr [rbp-0x38], eax + mov dword ptr [rbp-0x30], eax mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 2 call CORINFO_HELP_NEWARR_1_VC - mov ecx, dword ptr [rbp-0x38] + mov ecx, dword ptr [rbp-0x30] mov byte ptr [rax+0x10], cl - mov dword ptr [rbp-0x38], ecx + mov dword ptr [rbp-0x30], ecx mov edi, ecx sar edi, 8 mov byte ptr [rax+0x11], dil - mov gword ptr [rbp-0x80], rax - mov rax, gword ptr [rbp-0x80] + mov gword ptr [rbp-0x70], rax + mov rax, gword ptr [rbp-0x70] ;; size=49 bbWeight=2 PerfScore 18.50 G_M8858_IG47: - mov rdx, gword ptr [rbp-0x70] + mov rdx, gword ptr [rbp-0x60] test rdx, rdx jne SHORT G_M8858_IG50 test r13, r13 je SHORT G_M8858_IG48 - mov gword ptr [rbp-0x80], rax + mov gword ptr [rbp-0x70], rax mov rdi, r13 mov rdx, 0xD1FFAB1E ; code for System.Text.Decoder:get_FallbackBuffer():System.Text.DecoderFallbackBuffer:this call [rdx]System.Text.Decoder:get_FallbackBuffer():System.Text.DecoderFallbackBuffer:this mov rdx, rax jmp SHORT G_M8858_IG49 ;; size=38 bbWeight=2 PerfScore 20.50 G_M8858_IG48: - mov gword ptr [rbp-0x80], rax + mov gword ptr [rbp-0x70], rax mov rdi, gword ptr [r14+0x18] mov rdx, qword ptr [rdi] mov rdx, qword ptr [rdx+0x40] call [rdx+0x20]System.Text.DecoderFallback:CreateFallbackBuffer():System.Text.DecoderFallbackBuffer:this mov rdx, rax ;; size=21 bbWeight=2 PerfScore 20.50 G_M8858_IG49: mov rax, rdx - mov r8, qword ptr [rbp-0x58] + mov r8, qword ptr [rbp-0x50] mov qword ptr [rax+0x18], r8 - mov r9, qword ptr [rbp-0x50] + mov r9, qword ptr [rbp-0x48] mov qword ptr [rax+0x20], r9 mov rdx, rax - mov rax, gword ptr [rbp-0x80] + mov rax, gword ptr [rbp-0x70] ;; size=26 bbWeight=2 PerfScore 11.00 G_M8858_IG50: - mov qword ptr [rbp-0x40], r15 - lea rcx, [rbp-0x40] - mov gword ptr [rbp-0x70], rdx + mov qword ptr [rbp-0x38], r15 + lea rcx, [rbp-0x38] + mov gword ptr [rbp-0x60], rdx mov rdi, rdx mov rsi, rax mov rdx, rbx - mov r15, gword ptr [rbp-0x70] - mov rax, qword ptr [r15] - mov rax, qword ptr [rax+0x48] - call [rax+0x08]System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong,byref):ubyte:this - mov rdi, qword ptr [rbp-0x40] - mov rcx, rdi + mov rax, 0xD1FFAB1E ; code for System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong,byref):ubyte:this + cmp dword ptr [rdi], edi + call [rax]System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong,byref):ubyte:this + mov r15, qword ptr [rbp-0x38] test eax, eax - mov gword ptr [rbp-0x70], r15 - mov r15, rcx - mov rdx, qword ptr [rbp-0x48] + mov rdx, qword ptr [rbp-0x40] je SHORT G_M8858_IG52 - ;; size=57 bbWeight=2 PerfScore 32.00 + ;; size=47 bbWeight=2 PerfScore 25.50 G_M8858_IG51: - mov r8, qword ptr [rbp-0x50] + mov r8, qword ptr [rbp-0x48] jmp G_M8858_IG23 ;; size=9 bbWeight=1 PerfScore 3.00 G_M8858_IG52: add rbx, -2 xor edi, edi - mov r12, gword ptr [rbp-0x70] + mov r12, gword ptr [rbp-0x60] mov qword ptr [r12+0x18], rdi mov rdi, r12 - mov gword ptr [rbp-0x70], r12 + mov gword ptr [rbp-0x60], r12 mov rax, qword ptr [r12] mov rax, qword ptr [rax+0x48] call [rax]System.Text.DecoderFallbackBuffer:Reset():this jmp SHORT G_M8858_IG54 ;; size=34 bbWeight=0.50 PerfScore 6.38 G_M8858_IG53: add rbx, -2 ;; size=4 bbWeight=0.50 PerfScore 0.12 G_M8858_IG54: - cmp r15, qword ptr [rbp-0x60] + cmp r15, qword ptr [rbp-0x58] sete dl movzx rdx, dl mov rdi, r14 mov rsi, r13 mov rcx, 0xD1FFAB1E ; code for System.Text.Encoding:ThrowCharsOverflow(System.Text.DecoderNLS,ubyte):this call [rcx]System.Text.Encoding:ThrowCharsOverflow(System.Text.DecoderNLS,ubyte):this - mov eax, dword ptr [rbp-0x38] - mov r8, qword ptr [rbp-0x50] - mov r12d, dword ptr [rbp-0x34] + mov eax, dword ptr [rbp-0x30] + mov r8, qword ptr [rbp-0x48] + mov r12d, dword ptr [rbp-0x2C] jmp G_M8858_IG26 ;; size=44 bbWeight=0.50 PerfScore 6.00 G_M8858_IG55: mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 2 call CORINFO_HELP_NEWARR_1_VC - mov ecx, dword ptr [rbp-0x38] + mov ecx, dword ptr [rbp-0x30] mov byte ptr [rax+0x10], cl - mov dword ptr [rbp-0x38], ecx + mov dword ptr [rbp-0x30], ecx mov edi, ecx sar edi, 8 mov byte ptr [rax+0x11], dil - mov gword ptr [rbp-0x88], rax - mov rax, gword ptr [rbp-0x88] - ;; size=52 bbWeight=0.50 PerfScore 4.12 + mov gword ptr [rbp-0x78], rax + mov rax, gword ptr [rbp-0x78] + ;; size=46 bbWeight=0.50 PerfScore 4.12 G_M8858_IG56: - mov rdx, gword ptr [rbp-0x70] + mov rdx, gword ptr [rbp-0x60] test rdx, rdx jne SHORT G_M8858_IG59 test r13, r13 je SHORT G_M8858_IG57 - mov gword ptr [rbp-0x88], rax + mov gword ptr [rbp-0x78], rax mov rdi, r13 mov rdx, 0xD1FFAB1E ; code for System.Text.Decoder:get_FallbackBuffer():System.Text.DecoderFallbackBuffer:this call [rdx]System.Text.Decoder:get_FallbackBuffer():System.Text.DecoderFallbackBuffer:this mov rdx, rax jmp SHORT G_M8858_IG58 - ;; size=41 bbWeight=0.50 PerfScore 5.12 + ;; size=38 bbWeight=0.50 PerfScore 5.12 G_M8858_IG57: - mov gword ptr [rbp-0x88], rax + mov gword ptr [rbp-0x78], rax mov rdi, gword ptr [r14+0x18] mov rdx, qword ptr [rdi] mov rdx, qword ptr [rdx+0x40] call [rdx+0x20]System.Text.DecoderFallback:CreateFallbackBuffer():System.Text.DecoderFallbackBuffer:this mov rdx, rax - ;; size=24 bbWeight=0.50 PerfScore 5.12 + ;; size=21 bbWeight=0.50 PerfScore 5.12 G_M8858_IG58: mov rax, rdx - mov r8, qword ptr [rbp-0x58] + mov r8, qword ptr [rbp-0x50] mov qword ptr [rax+0x18], r8 - mov r9, qword ptr [rbp-0x50] + mov r9, qword ptr [rbp-0x48] mov qword ptr [rax+0x20], r9 mov rdx, rax - mov rax, gword ptr [rbp-0x88] - ;; size=29 bbWeight=0.50 PerfScore 2.75 + mov rax, gword ptr [rbp-0x78] + ;; size=26 bbWeight=0.50 PerfScore 2.75 G_M8858_IG59: - mov qword ptr [rbp-0x40], r15 - lea rcx, [rbp-0x40] - mov gword ptr [rbp-0x70], rdx + mov qword ptr [rbp-0x38], r15 + lea rcx, [rbp-0x38] + mov gword ptr [rbp-0x60], rdx mov rdi, rdx mov rsi, rax mov rdx, rbx - mov r15, gword ptr [rbp-0x70] - mov rax, qword ptr [r15] - mov rax, qword ptr [rax+0x48] - mov qword ptr [rbp-0x68], rax - call [rax+0x08]System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong,byref):ubyte:this - mov rdi, qword ptr [rbp-0x40] - mov qword ptr [rbp-0x30], rdi + mov rax, 0xD1FFAB1E ; code for System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong,byref):ubyte:this + cmp dword ptr [rdi], edi + call [rax]System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong,byref):ubyte:this + mov r15, qword ptr [rbp-0x38] test eax, eax jne SHORT G_M8858_IG60 add rbx, -2 lea rdi, [rbx-0x01] test r12d, r12d cmovge rbx, rdi xor edi, edi - mov qword ptr [r15+0x18], rdi - mov rdi, r15 - mov r15, qword ptr [rbp-0x68] - call [r15]System.Text.DecoderFallbackBuffer:Reset():this - mov r15, qword ptr [rbp-0x30] - cmp r15, qword ptr [rbp-0x60] + mov rax, gword ptr [rbp-0x60] + mov qword ptr [rax+0x18], rdi + mov rdi, rax + mov rax, qword ptr [rax] + mov rax, qword ptr [rax+0x48] + call [rax]System.Text.DecoderFallbackBuffer:Reset():this + cmp r15, qword ptr [rbp-0x58] sete dl movzx rdx, dl mov rdi, r14 mov rsi, r13 mov rcx, 0xD1FFAB1E ; code for System.Text.Encoding:ThrowCharsOverflow(System.Text.DecoderNLS,ubyte):this call [rcx]System.Text.Encoding:ThrowCharsOverflow(System.Text.DecoderNLS,ubyte):this add rbx, 2 test r12d, r12d jl G_M8858_IG67 jmp G_M8858_IG65 - ;; size=132 bbWeight=0.50 PerfScore 16.88 + ;; size=126 bbWeight=0.50 PerfScore 16.50 G_M8858_IG60: - xor edi, edi - mov dword ptr [rbp-0x38], edi - mov gword ptr [rbp-0x70], r15 - mov r8, qword ptr [rbp-0x50] - mov r15, qword ptr [rbp-0x30] - ;; size=17 bbWeight=0.50 PerfScore 2.12 + xor ecx, ecx + mov dword ptr [rbp-0x30], ecx + mov r8, qword ptr [rbp-0x48] + ;; size=9 bbWeight=0.50 PerfScore 1.12 G_M8858_IG61: test r12d, r12d jl G_M8858_IG67 - mov rcx, gword ptr [rbp-0x70] + mov rcx, gword ptr [rbp-0x60] test rcx, rcx - mov gword ptr [rbp-0x70], rcx + mov gword ptr [rbp-0x60], rcx jne SHORT G_M8858_IG64 test r13, r13 je SHORT G_M8858_IG62 mov rdi, r13 mov rcx, 0xD1FFAB1E ; code for System.Text.Decoder:get_FallbackBuffer():System.Text.DecoderFallbackBuffer:this call [rcx]System.Text.Decoder:get_FallbackBuffer():System.Text.DecoderFallbackBuffer:this mov rcx, rax jmp SHORT G_M8858_IG63 ;; size=47 bbWeight=0.50 PerfScore 5.75 G_M8858_IG62: mov rdi, gword ptr [r14+0x18] mov rcx, qword ptr [rdi] mov rcx, qword ptr [rcx+0x40] call [rcx+0x20]System.Text.DecoderFallback:CreateFallbackBuffer():System.Text.DecoderFallbackBuffer:this mov rcx, rax ;; size=17 bbWeight=0.50 PerfScore 4.62 G_M8858_IG63: mov rax, rcx - mov rcx, qword ptr [rbp-0x58] + mov rcx, qword ptr [rbp-0x50] mov qword ptr [rax+0x18], rcx - mov gword ptr [rbp-0x70], rax - mov rdi, qword ptr [rbp-0x50] + mov gword ptr [rbp-0x60], rax + mov rdi, qword ptr [rbp-0x48] mov qword ptr [rax+0x20], rdi ;; size=23 bbWeight=0.50 PerfScore 2.62 G_M8858_IG64: - mov qword ptr [rbp-0x40], r15 + mov qword ptr [rbp-0x38], r15 mov rdi, 0xD1FFAB1E ; ubyte[] mov esi, 1 call CORINFO_HELP_NEWARR_1_VC mov byte ptr [rax+0x10], r12b - lea rcx, [rbp-0x40] - mov rdi, gword ptr [rbp-0x70] + lea rcx, [rbp-0x38] + mov rdi, gword ptr [rbp-0x60] mov rsi, rax mov rdx, rbx - mov gword ptr [rbp-0x70], rdi - mov rax, qword ptr [rdi] - mov r15, qword ptr [rax+0x48] - call [r15+0x08]System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong,byref):ubyte:this - mov rdi, qword ptr [rbp-0x40] - mov qword ptr [rbp-0x30], rdi + mov rax, 0xD1FFAB1E ; code for System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong,byref):ubyte:this + call [rax]System.Text.DecoderFallbackBuffer:InternalFallback(ubyte[],ulong,byref):ubyte:this + mov r15, qword ptr [rbp-0x38] test eax, eax jne SHORT G_M8858_IG66 dec rbx xor edi, edi - mov rax, gword ptr [rbp-0x70] + mov rax, gword ptr [rbp-0x60] mov qword ptr [rax+0x18], rdi mov rdi, rax - call [r15]System.Text.DecoderFallbackBuffer:Reset():this - mov r15, qword ptr [rbp-0x30] - cmp r15, qword ptr [rbp-0x60] + mov rax, qword ptr [rax] + mov rax, qword ptr [rax+0x48] + call [rax]System.Text.DecoderFallbackBuffer:Reset():this + cmp r15, qword ptr [rbp-0x58] sete dl movzx rdx, dl mov rdi, r14 mov rsi, r13 mov rcx, 0xD1FFAB1E ; code for System.Text.Encoding:ThrowCharsOverflow(System.Text.DecoderNLS,ubyte):this call [rcx]System.Text.Encoding:ThrowCharsOverflow(System.Text.DecoderNLS,ubyte):this - ;; size=120 bbWeight=0.50 PerfScore 15.25 + ;; size=115 bbWeight=0.50 PerfScore 13.88 G_M8858_IG65: inc rbx jmp SHORT G_M8858_IG67 ;; size=5 bbWeight=0.50 PerfScore 1.12 G_M8858_IG66: mov r12d, -1 - mov r15, qword ptr [rbp-0x30] - ;; size=10 bbWeight=0.50 PerfScore 0.62 + ;; size=6 bbWeight=0.50 PerfScore 0.12 G_M8858_IG67: test r13, r13 je SHORT G_M8858_IG69 ;; size=5 bbWeight=1 PerfScore 1.25 G_M8858_IG68: mov rax, rbx - sub rax, qword ptr [rbp-0x58] + sub rax, qword ptr [rbp-0x50] mov dword ptr [r13+0x20], eax - mov ebx, dword ptr [rbp-0x38] + mov ebx, dword ptr [rbp-0x30] mov word ptr [r13+0x2E], bx mov dword ptr [r13+0x30], r12d ;; size=23 bbWeight=0.50 PerfScore 3.12 G_M8858_IG69: mov rax, r15 - sub rax, qword ptr [rbp-0x60] + sub rax, qword ptr [rbp-0x58] mov rsi, rax shr rsi, 63 add rax, rsi sar rax, 1 ;; size=20 bbWeight=1 PerfScore 3.75 G_M8858_IG70: - add rsp, 104 + add rsp, 88 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25 G_M8858_IG71: mov rsi, r9 mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS call [rax]CORINFO_HELP_CHKCASTCLASS int3 ;; size=16 bbWeight=0 PerfScore 0.00 -; Total bytes of code 2110, prolog size 31, PerfScore 793.62, instruction count 557, allocated bytes for code 2110 (MethodHash=1564dd65) for method System.Text.UnicodeEncoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (FullOpts) +; Total bytes of code 2060, prolog size 31, PerfScore 777.88, instruction count 543, allocated bytes for code 2060 (MethodHash=1564dd65) for method System.Text.UnicodeEncoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (FullOpts) ```
-4 (-0.36 % of base) - System.Text.UTF32Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this ```diff ; Assembly listing for method System.Text.UTF32Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):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; 11 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T15] ( 10, 22.50) ref -> r13 this class-hnd single-def -; V01 arg1 [V01,T03] ( 18, 81.50) long -> r15 +; V01 arg1 [V01,T02] ( 18, 81.50) long -> r15 ; V02 arg2 [V02,T28] ( 3, 3 ) int -> rdx single-def ; V03 arg3 [V03,T00] ( 40,184 ) long -> registers ; V04 arg4 [V04,T29] ( 3, 3 ) int -> r8 single-def ; V05 arg5 [V05,T14] ( 15, 27.50) ref -> r14 class-hnd single-def ; V06 loc0 [V06,T30] ( 4, 3.50) long -> r12 ; V07 loc1 [V07,T16] ( 3, 18 ) long -> [rbp-0x30] spill-single-def ; V08 loc2 [V08,T18] ( 5, 13 ) long -> [rbp-0x38] spill-single-def ; V09 loc3 [V09,T27] ( 3, 11 ) long -> [rbp-0x40] spill-single-def ; V10 loc4 [V10,T13] ( 11, 38 ) ushort -> [rbp-0x44] -; V11 loc5 [V11,T02] ( 24, 91 ) ref -> [rbp-0x58] class-hnd +; V11 loc5 [V11,T03] ( 22, 75 ) ref -> [rbp-0x58] class-hnd ; V12 loc6 [V12 ] ( 6, 48 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed ld-addr-op ; V13 loc7 [V13,T01] ( 16,106 ) ushort -> registers ; V14 loc8 [V14,T17] ( 7, 14 ) int -> rax ;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V16 tmp1 [V16,T04] ( 4, 68 ) int -> registers "dup spill" ; V17 tmp2 [V17,T05] ( 3, 48 ) long -> rsi "impSpillLclRefs" ; V18 tmp3 [V18,T06] ( 3, 48 ) long -> rsi "impSpillLclRefs" ; V19 tmp4 [V19,T07] ( 3, 48 ) long -> rsi "impSpillLclRefs" ; V20 tmp5 [V20,T08] ( 3, 48 ) long -> rsi "impSpillLclRefs" ; V21 tmp6 [V21,T09] ( 3, 48 ) long -> rbx "impSpillLclRefs" ; V22 tmp7 [V22,T10] ( 3, 48 ) long -> rsi "impSpillLclRefs" ; V23 tmp8 [V23,T11] ( 3, 48 ) long -> rsi "impSpillLclRefs" ; V24 tmp9 [V24,T12] ( 3, 48 ) long -> rsi "impSpillLclRefs" ; V25 tmp10 [V25,T19] ( 3, 12 ) long -> rdi "impSpillLclRefs" ; V26 tmp11 [V26,T20] ( 3, 12 ) long -> rdi "impSpillLclRefs" ; V27 tmp12 [V27,T21] ( 3, 12 ) long -> rdi "impSpillLclRefs" ; V28 tmp13 [V28,T22] ( 3, 12 ) long -> rdi "impSpillLclRefs" ; V29 tmp14 [V29,T23] ( 3, 12 ) long -> rdi "impSpillLclRefs" ; V30 tmp15 [V30,T24] ( 3, 12 ) long -> rdi "impSpillLclRefs" ; V31 tmp16 [V31,T25] ( 3, 12 ) long -> rdi "impSpillLclRefs" ; V32 tmp17 [V32,T26] ( 3, 12 ) long -> rdi "impSpillLclRefs" ; V33 tmp18 [V33,T36] ( 2, 0 ) ref -> rbx class-hnd exact single-def "impAppendStmt" ; V34 tmp19 [V34,T37] ( 2, 0 ) ref -> r15 class-hnd exact single-def "impAppendStmt" ; V35 tmp20 [V35,T33] ( 3, 0 ) ref -> rdi class-hnd single-def "dup spill" ;* V36 tmp21 [V36 ] ( 0, 0 ) ref -> zero-ref single-def ;* V37 tmp22 [V37 ] ( 0, 0 ) ref -> zero-ref single-def ;* V38 tmp23 [V38 ] ( 0, 0 ) ref -> zero-ref single-def ;* V39 tmp24 [V39 ] ( 0, 0 ) ref -> zero-ref single-def ;* V40 tmp25 [V40 ] ( 0, 0 ) ref -> zero-ref single-def ; V41 tmp26 [V41,T34] ( 3, 0 ) ref -> r14 ; V42 tmp27 [V42,T35] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" ;* V43 tmp28 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V44 tmp29 [V44,T31] ( 3, 3 ) ref -> rdi single-def "argument with side effect" ; V45 tmp30 [V45,T38] ( 2, 0 ) ref -> rsi single-def "argument with side effect" ; V46 rat0 [V46,T32] ( 3, 3 ) long -> rax "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 56 G_M32635_IG01: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 56 lea rbp, [rsp+0x60] mov r13, rdi mov r15, rsi mov rbx, rcx mov r14, r9 ;; size=31 bbWeight=1 PerfScore 7.75 G_M32635_IG02: mov r12, r15 movsxd rdi, edx lea rax, [r12+2*rdi] mov qword ptr [rbp-0x30], rax mov rcx, rbx mov qword ptr [rbp-0x38], rcx movsxd rdx, r8d add rdx, rcx mov qword ptr [rbp-0x40], rdx xor esi, esi test r14, r14 je SHORT G_M32635_IG04 ;; size=38 bbWeight=1 PerfScore 6.25 G_M32635_IG03: movzx rsi, word ptr [r14+0x24] mov dword ptr [rbp-0x44], esi mov rdi, r14 mov r8, 0xD1FFAB1E ; code for System.Text.Encoder:get_FallbackBuffer():System.Text.EncoderFallbackBuffer:this call [r8]System.Text.Encoder:get_FallbackBuffer():System.Text.EncoderFallbackBuffer:this cmp byte ptr [r14+0x27], 0 je SHORT G_M32635_IG05 mov rdi, rax mov gword ptr [rbp-0x58], rax mov rcx, qword ptr [rax] mov rcx, qword ptr [rcx+0x48] call [rcx]System.Text.EncoderFallbackBuffer:get_Remaining():int:this test eax, eax mov rax, gword ptr [rbp-0x58] jle SHORT G_M32635_IG05 jmp G_M32635_IG32 ;; size=60 bbWeight=0.50 PerfScore 11.50 G_M32635_IG04: mov dword ptr [rbp-0x44], esi mov rdi, gword ptr [r13+0x10] mov r8, qword ptr [rdi] mov r8, qword ptr [r8+0x40] call [r8+0x20]System.Text.EncoderFallback:CreateFallbackBuffer():System.Text.EncoderFallbackBuffer:this ;; size=18 bbWeight=0.50 PerfScore 5.00 G_M32635_IG05: mov qword ptr [rax+0x18], r12 mov rcx, qword ptr [rbp-0x30] mov qword ptr [rax+0x20], rcx mov gword ptr [rbp-0x58], rax lea rdi, bword ptr [rax+0x08] mov rsi, r14 call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rbp-0x58] mov word ptr [rax+0x30], 1 mov byte ptr [rax+0x32], 0 xor edi, edi mov dword ptr [rax+0x28], edi mov gword ptr [rbp-0x58], rax mov rdi, rax mov rcx, 0xD1FFAB1E ; code for System.Text.EncoderFallbackBuffer:InternalGetNextChar():ushort:this call [rcx]System.Text.EncoderFallbackBuffer:InternalGetNextChar():ushort:this mov ecx, eax test ecx, ecx je G_M32635_IG08 ;; size=76 bbWeight=1 PerfScore 16.00 G_M32635_IG06: test ecx, ecx jne SHORT G_M32635_IG07 movzx rcx, word ptr [r15] add r15, 2 ;; size=12 bbWeight=2 PerfScore 7.00 G_M32635_IG07: mov edi, dword ptr [rbp-0x44] test edi, edi je SHORT G_M32635_IG09 lea eax, [rcx-0xDC00] cmp eax, 0x3FF ja G_M32635_IG23 add edi, -0xD800 shl edi, 10 lea eax, [rdi+rcx+0x2400] xor edi, edi xor edx, edx lea rdi, [rbx+0x03] cmp rdi, qword ptr [rbp-0x40] jb G_M32635_IG28 mov r8, gword ptr [rbp-0x58] cmp byte ptr [r8+0x32], 0 je G_M32635_IG30 mov rdi, r8 mov gword ptr [rbp-0x58], r8 mov rax, qword ptr [r8] mov rax, qword ptr [rax+0x40] call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this mov rdi, gword ptr [rbp-0x58] mov gword ptr [rbp-0x58], rdi mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this jmp G_M32635_IG31 ;; size=113 bbWeight=2 PerfScore 68.00 G_M32635_IG08: mov edx, ecx jmp G_M32635_IG26 ;; size=7 bbWeight=0.50 PerfScore 1.12 G_M32635_IG09: lea edx, [rcx-0xD800] cmp edx, 0x3FF ja SHORT G_M32635_IG10 mov dword ptr [rbp-0x44], ecx jmp G_M32635_IG25 ;; size=22 bbWeight=8 PerfScore 38.00 G_M32635_IG10: lea edx, [rcx-0xDC00] cmp edx, 0x3FF ja SHORT G_M32635_IG11 mov dword ptr [rbp-0x44], edi mov qword ptr [rbp-0x50], r15 lea rdx, [rbp-0x50] mov rdi, gword ptr [rbp-0x58] mov esi, ecx - mov gword ptr [rbp-0x58], rdi - mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x48] - call [rax+0x10]System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this + mov rax, 0xD1FFAB1E ; code for System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this + call [rax]System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this mov r15, qword ptr [rbp-0x50] jmp G_M32635_IG25 - ;; size=54 bbWeight=8 PerfScore 132.00 + ;; size=52 bbWeight=8 PerfScore 94.00 G_M32635_IG11: lea rax, [rbx+0x03] cmp rax, qword ptr [rbp-0x40] jb SHORT G_M32635_IG12 mov rax, gword ptr [rbp-0x58] cmp byte ptr [rax+0x32], 0 je G_M32635_IG14 mov dword ptr [rbp-0x44], edi mov rdi, rax mov gword ptr [rbp-0x58], rax mov rcx, qword ptr [rax] mov rcx, qword ptr [rcx+0x40] call [rcx+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this jmp G_M32635_IG15 ;; size=49 bbWeight=8 PerfScore 158.00 G_M32635_IG12: cmp byte ptr [r13+0x27], 0 je SHORT G_M32635_IG13 lea rsi, [rbx+0x01] mov rax, rsi mov byte ptr [rbx], 0 mov rsi, rax lea rax, [rsi+0x01] mov byte ptr [rsi], 0 mov rsi, rax lea rax, [rsi+0x01] mov r8d, ecx shr r8d, 8 mov byte ptr [rsi], r8b mov rsi, rax lea rax, [rsi+0x01] mov byte ptr [rsi], cl mov dword ptr [rbp-0x44], edi mov rbx, rax jmp G_M32635_IG25 ;; size=64 bbWeight=8 PerfScore 120.00 G_M32635_IG13: mov rsi, rbx lea rbx, [rsi+0x01] mov byte ptr [rsi], cl mov rsi, rbx lea rbx, [rsi+0x01] mov eax, ecx shr eax, 8 mov byte ptr [rsi], al mov rsi, rbx lea rbx, [rsi+0x01] mov byte ptr [rsi], 0 mov rsi, rbx lea rbx, [rsi+0x01] mov byte ptr [rsi], 0 mov dword ptr [rbp-0x44], edi jmp G_M32635_IG25 ;; size=51 bbWeight=8 PerfScore 86.00 G_M32635_IG14: add r15, -2 mov gword ptr [rbp-0x58], rax mov dword ptr [rbp-0x44], edi ;; size=11 bbWeight=8 PerfScore 18.00 G_M32635_IG15: cmp rbx, qword ptr [rbp-0x38] sete dl movzx rdx, dl mov rdi, r13 mov rsi, r14 mov rcx, 0xD1FFAB1E ; code for System.Text.Encoding:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this call [rcx]System.Text.Encoding:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this ;; size=28 bbWeight=8 PerfScore 56.00 G_M32635_IG16: test r14, r14 je SHORT G_M32635_IG18 ;; size=5 bbWeight=8 PerfScore 10.00 G_M32635_IG17: cmp byte ptr [r14+0x26], 0 je SHORT G_M32635_IG20 ;; size=7 bbWeight=2 PerfScore 8.00 G_M32635_IG18: mov ecx, dword ptr [rbp-0x44] test ecx, ecx jg SHORT G_M32635_IG24 ;; size=7 bbWeight=4 PerfScore 9.00 G_M32635_IG19: test r14, r14 mov dword ptr [rbp-0x44], ecx je SHORT G_M32635_IG21 ;; size=8 bbWeight=1 PerfScore 2.25 G_M32635_IG20: mov ecx, dword ptr [rbp-0x44] mov word ptr [r14+0x24], cx mov rax, r15 sub rax, r12 mov rdx, rax shr rdx, 63 add rax, rdx sar rax, 1 mov dword ptr [r14+0x20], eax ;; size=31 bbWeight=0.50 PerfScore 2.50 G_M32635_IG21: mov rax, rbx sub rax, qword ptr [rbp-0x38] ;; size=7 bbWeight=1 PerfScore 2.25 G_M32635_IG22: add rsp, 56 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25 G_M32635_IG23: add r15, -2 mov ecx, edi ;; size=6 bbWeight=2 PerfScore 1.00 G_M32635_IG24: mov qword ptr [rbp-0x50], r15 lea rdx, [rbp-0x50] mov rdi, gword ptr [rbp-0x58] mov esi, ecx - mov gword ptr [rbp-0x58], rdi - mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x48] - call [rax+0x10]System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this + mov rax, 0xD1FFAB1E ; code for System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this + call [rax]System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this mov r15, qword ptr [rbp-0x50] xor ecx, ecx mov dword ptr [rbp-0x44], ecx - ;; size=37 bbWeight=8 PerfScore 104.00 + ;; size=35 bbWeight=8 PerfScore 66.00 G_M32635_IG25: mov rdi, gword ptr [rbp-0x58] mov rax, 0xD1FFAB1E ; code for System.Text.EncoderFallbackBuffer:InternalGetNextChar():ushort:this call [rax]System.Text.EncoderFallbackBuffer:InternalGetNextChar():ushort:this mov ecx, eax mov edx, ecx test edx, edx jne SHORT G_M32635_IG27 ;; size=24 bbWeight=16 PerfScore 96.00 G_M32635_IG26: mov rax, qword ptr [rbp-0x30] cmp r15, rax mov ecx, edx jb G_M32635_IG06 jmp G_M32635_IG16 ;; size=20 bbWeight=16 PerfScore 72.00 G_M32635_IG27: mov ecx, edx jmp G_M32635_IG06 ;; size=7 bbWeight=8 PerfScore 18.00 G_M32635_IG28: cmp byte ptr [r13+0x27], 0 je SHORT G_M32635_IG29 mov rdi, rbx lea rbx, [rdi+0x01] mov byte ptr [rdi], 0 mov rdi, rbx lea rbx, [rdi+0x01] mov ecx, eax shr ecx, 16 mov byte ptr [rdi], cl mov rdi, rbx lea rbx, [rdi+0x01] mov ecx, eax shr ecx, 8 mov byte ptr [rdi], cl mov rdi, rbx lea rbx, [rdi+0x01] mov byte ptr [rdi], al mov dword ptr [rbp-0x44], edx jmp SHORT G_M32635_IG25 ;; size=59 bbWeight=2 PerfScore 31.00 G_M32635_IG29: mov rdi, rbx lea rbx, [rdi+0x01] mov byte ptr [rdi], al mov rdi, rbx lea rbx, [rdi+0x01] mov ecx, eax shr ecx, 8 mov byte ptr [rdi], cl mov rdi, rbx lea rbx, [rdi+0x01] shr eax, 16 mov byte ptr [rdi], al mov rdi, rbx lea rbx, [rdi+0x01] mov byte ptr [rdi], 0 mov dword ptr [rbp-0x44], edx jmp G_M32635_IG25 ;; size=53 bbWeight=2 PerfScore 22.50 G_M32635_IG30: add r15, -4 mov gword ptr [rbp-0x58], r8 ;; size=8 bbWeight=2 PerfScore 2.50 G_M32635_IG31: cmp rbx, qword ptr [rbp-0x38] sete dl movzx rdx, dl mov rdi, r13 mov rsi, r14 mov rcx, 0xD1FFAB1E ; code for System.Text.Encoding:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this call [rcx]System.Text.Encoding:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this xor edx, edx mov dword ptr [rbp-0x44], edx jmp G_M32635_IG16 ;; size=38 bbWeight=2 PerfScore 20.50 G_M32635_IG32: mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_EncoderFallbackNotEmpty():System.String call [rax]System.SR:get_Argument_EncoderFallbackNotEmpty():System.String mov rbx, rax cmp gword ptr [r13+0x08], 0 jne SHORT G_M32635_IG33 mov rdi, r13 mov rax, 0xD1FFAB1E ; code for System.Text.Encoding:GetDataItem():this call [rax]System.Text.Encoding:GetDataItem():this ;; size=37 bbWeight=0 PerfScore 0.00 G_M32635_IG33: mov rdi, gword ptr [r13+0x08] mov r15, gword ptr [rdi+0x20] mov rdi, gword ptr [r14+0x08] test rdi, rdi je SHORT G_M32635_IG34 call System.Object:GetType():System.Type:this mov r14, rax jmp SHORT G_M32635_IG35 ;; size=27 bbWeight=0 PerfScore 0.00 G_M32635_IG34: xor r14, r14 ;; size=3 bbWeight=0 PerfScore 0.00 G_M32635_IG35: mov rdi, 0xD1FFAB1E ; System.ArgumentException call CORINFO_HELP_NEWSFAST mov r13, rax mov rdi, rbx mov rsi, r15 mov rdx, r14 mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object,System.Object):System.String call [rax]System.SR:Format(System.String,System.Object,System.Object):System.String mov rsi, rax mov rdi, r13 mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String):this call [rax]System.ArgumentException:.ctor(System.String):this mov rdi, r13 call CORINFO_HELP_THROW int3 ;; size=66 bbWeight=0 PerfScore 0.00 -; Total bytes of code 1099, prolog size 19, PerfScore 1136.38, instruction count 312, allocated bytes for code 1099 (MethodHash=3c5e8084) for method System.Text.UTF32Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts) +; Total bytes of code 1095, prolog size 19, PerfScore 1060.38, instruction count 308, allocated bytes for code 1095 (MethodHash=3c5e8084) for method System.Text.UTF32Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts) ```

Larger list of diffs: https://gist.github.com/MihuBot/2ae802e98622c2bc62c704d0e47f2383

MihuBot commented 3 weeks ago

@xtqqczze

xtqqczze commented 3 weeks ago

https://github.com/dotnet/runtime/pull/104483