8 (0.43 % of base) - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this
; 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 <System.Text.UnicodeEncoding>
; 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 <System.Text.EncoderNLS>
; 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 <System.Text.EncoderFallbackBuffer>
+; V13 loc7 [V13,T00] ( 56,380.50) ref -> [rbp-0x68] class-hnd <System.Text.EncoderFallbackBuffer>
; 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" <System.Char>
; V27 tmp8 [V27,T49] ( 2, 0 ) ref -> r14 class-hnd exact "impImportAndPushBox" <System.String>
; V28 tmp9 [V28,T45] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentException>
; 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" <System.String>
; V41 tmp22 [V41,T51] ( 2, 0 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.String>
; V42 tmp23 [V42,T46] ( 3, 0 ) ref -> rdi class-hnd single-def "dup spill" <System.Text.EncoderFallback>
;* 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" <System.ArgumentException>
; 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
; 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 <System.Text.Encoding+EncodingCharBuffer>
; V01 arg1 [V01,T01] ( 5, 3.50) ref -> r15 class-hnd single-def <ubyte[]>
-; 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" <System.Text.DecoderFallbackBuffer>
; 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
; 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 <System.Text.UTF32Encoding>
; 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 <System.Text.EncoderNLS>
; 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 <System.Text.EncoderFallbackBuffer>
+; V08 loc4 [V08,T04] ( 14, 41 ) ref -> [rbp-0x40] class-hnd <System.Text.EncoderFallbackBuffer>
; 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" <System.ArgumentOutOfRangeException>
; V14 tmp3 [V14,T16] ( 2, 0 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.String>
; V15 tmp4 [V15,T17] ( 2, 0 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <System.String>
; V16 tmp5 [V16,T13] ( 3, 0 ) ref -> rdi class-hnd single-def "dup spill" <System.Text.EncoderFallback>
;* 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" <System.ArgumentException>
;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.CodePageDataItem>
; V28 tmp17 [V28,T18] ( 2, 0 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.RuntimeType>
; 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)
2 (0.13 % of base) - System.Text.UnicodeEncoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this
; Assembly listing for method System.Text.UnicodeEncoding:GetByteCount(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,T13] ( 9, 18 ) ref -> r14 this class-hnd single-def <System.Text.UnicodeEncoding>
-; V01 arg1 [V01,T02] ( 23,117 ) long -> registers
+; V01 arg1 [V01,T02] ( 23,117 ) long -> rbx
; V02 arg2 [V02,T20] ( 4, 4 ) int -> rdx single-def
; V03 arg3 [V03,T06] ( 22, 54.50) ref -> r15 class-hnd single-def <System.Text.EncoderNLS>
; V04 loc0 [V04,T07] ( 16, 56.50) int -> r13
; V05 loc1 [V05,T15] ( 7, 18 ) long -> r12
; V06 loc2 [V06,T11] ( 9, 37 ) long -> [rbp-0x30] spill-single-def
; V07 loc3 [V07,T05] ( 15, 68 ) ushort -> [rbp-0x34]
; V08 loc4 [V08,T19] ( 3, 9 ) ubyte -> [rbp-0x38]
-; V09 loc5 [V09,T00] ( 52,256.50) ref -> [rbp-0x50] class-hnd <System.Text.EncoderFallbackBuffer>
+; V09 loc5 [V09,T00] ( 48,232.50) ref -> [rbp-0x50] class-hnd <System.Text.EncoderFallbackBuffer>
; V10 loc6 [V10 ] ( 12, 72 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op
; V11 loc7 [V11,T03] ( 7, 76 ) ushort -> [rbp-0x44]
; V12 loc8 [V12,T14] ( 3, 20 ) long -> rdi
; V13 loc9 [V13,T04] ( 7, 70 ) long -> rax
; V14 loc10 [V14,T10] ( 5, 40 ) long -> rsi
;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V16 tmp1 [V16,T01] ( 4,144 ) int -> registers
; V17 tmp2 [V17,T12] ( 3, 24 ) ref -> rax
; V18 tmp3 [V18,T21] ( 3, 6 ) ref -> rdx
; V19 tmp4 [V19,T22] ( 3, 6 ) ref -> rax
;* V20 tmp5 [V20 ] ( 0, 0 ) long -> zero-ref
; V21 tmp6 [V21,T23] ( 3, 6 ) ref -> rax
; V22 tmp7 [V22,T24] ( 3, 0 ) ref -> r14 class-hnd exact "Single-def Box Helper" <System.Char>
; V23 tmp8 [V23,T30] ( 2, 0 ) ref -> r15 class-hnd exact "impImportAndPushBox" <System.String>
; V24 tmp9 [V24,T25] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <System.ArgumentException>
; V25 tmp10 [V25,T31] ( 2, 0 ) ref -> rbx class-hnd exact single-def "non-inline candidate call" <System.String>
; V26 tmp11 [V26,T32] ( 2, 0 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <System.String>
; V27 tmp12 [V27,T26] ( 3, 0 ) ref -> rdi class-hnd single-def "dup spill" <System.Text.EncoderFallback>
;* V28 tmp13 [V28 ] ( 0, 0 ) ref -> zero-ref single-def
;* V29 tmp14 [V29 ] ( 0, 0 ) ref -> zero-ref single-def
;* V30 tmp15 [V30 ] ( 0, 0 ) ref -> zero-ref single-def
;* V31 tmp16 [V31 ] ( 0, 0 ) ref -> zero-ref single-def
;* V32 tmp17 [V32 ] ( 0, 0 ) ref -> zero-ref single-def
; V33 tmp18 [V33,T27] ( 3, 0 ) ref -> r15
; V34 tmp19 [V34,T28] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
; V35 tmp20 [V35,T29] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
; V36 tmp21 [V36,T09] ( 3, 48 ) ref -> rdi "argument with side effect"
; V37 tmp22 [V37,T16] ( 3, 12 ) ref -> rdi "argument with side effect"
; V38 tmp23 [V38,T17] ( 3, 12 ) ref -> rdi "argument with side effect"
; V39 tmp24 [V39,T18] ( 3, 12 ) ref -> rdi "argument with side effect"
; V40 tmp25 [V40,T33] ( 2, 0 ) ref -> r15 "argument with side effect"
; V41 tmp26 [V41,T34] ( 2, 0 ) ref -> rdx "argument with side effect"
; V42 tmp27 [V42,T35] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
; V43 tmp28 [V43,T36] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
; V44 tmp29 [V44,T37] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; V45 cse0 [V45,T08] ( 4, 48 ) long -> rdx "CSE #01: moderate"
;
; Lcl frame size = 40
G_M510_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 40
lea rbp, [rsp+0x50]
mov r14, rdi
mov rbx, rsi
mov r15, rcx
;; size=28 bbWeight=1 PerfScore 7.50
G_M510_IG02:
lea r13d, [rdx+rdx]
test r13d, r13d
jl G_M510_IG51
mov r12, rbx
movsxd rdi, edx
lea rax, [r12+2*rdi]
mov qword ptr [rbp-0x30], rax
xor ecx, ecx
xor edx, edx
mov dword ptr [rbp-0x38], edx
xor rsi, rsi
test r15, r15
mov dword ptr [rbp-0x34], ecx
je SHORT G_M510_IG04
;; size=44 bbWeight=1 PerfScore 7.75
G_M510_IG03:
movzx rcx, word ptr [r15+0x24]
lea edi, [r13+0x02]
mov dword ptr [rbp-0x34], ecx
test ecx, ecx
cmovg r13d, edi
cmp gword ptr [r15+0x10], 0
mov rax, rsi
je SHORT G_M510_IG07
mov rdi, r15
mov rsi, 0xD1FFAB1E ; code for System.Text.Encoder:get_FallbackBuffer():System.Text.EncoderFallbackBuffer:this
call [rsi]System.Text.Encoder:get_FallbackBuffer():System.Text.EncoderFallbackBuffer:this
mov rsi, rax
mov rdi, rsi
mov gword ptr [rbp-0x50], rsi
mov rax, qword ptr [rsi]
mov rax, qword ptr [rax+0x48]
call [rax]System.Text.EncoderFallbackBuffer:get_Remaining():int:this
test eax, eax
jle SHORT G_M510_IG05
jmp G_M510_IG48
;; size=71 bbWeight=0.50 PerfScore 11.75
G_M510_IG04:
mov rax, rsi
jmp SHORT G_M510_IG07
align [0 bytes for IG23]
;; size=5 bbWeight=0.50 PerfScore 1.12
G_M510_IG05:
mov rax, gword ptr [rbp-0x50]
mov qword ptr [rax+0x18], r12
mov rcx, qword ptr [rbp-0x30]
mov qword ptr [rax+0x20], rcx
mov gword ptr [rbp-0x50], rax
lea rdi, bword ptr [rax+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rax, gword ptr [rbp-0x50]
mov word ptr [rax+0x30], 0
mov byte ptr [rax+0x32], 0
xor edi, edi
mov dword ptr [rax+0x28], edi
jmp SHORT G_M510_IG07
;; size=53 bbWeight=2 PerfScore 26.00
G_M510_IG06:
xor ecx, ecx
mov dword ptr [rbp-0x34], ecx
mov rax, gword ptr [rbp-0x50]
;; size=9 bbWeight=8 PerfScore 18.00
G_M510_IG07:
test rax, rax
je SHORT G_M510_IG09
;; size=5 bbWeight=64 PerfScore 80.00
G_M510_IG08:
mov gword ptr [rbp-0x50], 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_M510_IG10
;; size=21 bbWeight=8 PerfScore 52.00
G_M510_IG09:
xor edi, edi
mov gword ptr [rbp-0x50], rax
mov eax, edi
;; size=8 bbWeight=8 PerfScore 12.00
G_M510_IG10:
movzx rcx, ax
test eax, eax
jne SHORT G_M510_IG17
;; size=7 bbWeight=64 PerfScore 96.00
G_M510_IG11:
cmp rbx, qword ptr [rbp-0x30]
jb SHORT G_M510_IG17
;; size=6 bbWeight=16 PerfScore 48.00
G_M510_IG12:
cmp dword ptr [rbp-0x34], 0
jle G_M510_IG42
;; size=10 bbWeight=8 PerfScore 24.00
G_M510_IG13:
add r13d, -2
test r15, r15
je SHORT G_M510_IG15
;; size=9 bbWeight=4 PerfScore 6.00
G_M510_IG14:
cmp byte ptr [r15+0x26], 0
je G_M510_IG42
;; size=11 bbWeight=2 PerfScore 8.00
G_M510_IG15:
cmp dword ptr [rbp-0x38], 0
jne G_M510_IG47
mov rsi, gword ptr [rbp-0x50]
test rsi, rsi
jne G_M510_IG46
;; size=23 bbWeight=4 PerfScore 21.00
G_M510_IG16:
test r15, r15
je G_M510_IG44
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
jmp G_M510_IG45
;; size=29 bbWeight=2 PerfScore 13.50
G_M510_IG17:
test ecx, ecx
jne G_M510_IG21
movzx rcx, byte ptr [r14+0x26]
xor ecx, 1
je SHORT G_M510_IG18
mov edi, ebx
and edi, 7
mov ecx, dword ptr [rbp-0x34]
or edi, ecx
mov dword ptr [rbp-0x34], ecx
je SHORT G_M510_IG22
;; size=33 bbWeight=2 PerfScore 16.50
G_M510_IG18:
movzx rdi, word ptr [rbx]
mov eax, edi
add rbx, 2
;; size=9 bbWeight=2 PerfScore 5.00
G_M510_IG19:
mov edi, eax
sub edi, 0xD800
cmp edi, 0x7FF
ja G_M510_IG37
mov dword ptr [rbp-0x44], eax
cmp eax, 0xDBFF
jg G_M510_IG28
mov eax, dword ptr [rbp-0x44]
cmp dword ptr [rbp-0x34], 0
jle G_M510_IG33
add rbx, -2
add r13d, -2
mov rdx, gword ptr [rbp-0x50]
test rdx, rdx
mov gword ptr [rbp-0x50], rdx
jne SHORT G_M510_IG20
test r15, r15
je G_M510_IG34
mov rdi, r15
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_M510_IG35
;; size=97 bbWeight=2 PerfScore 37.00
G_M510_IG20:
mov ecx, dword ptr [rbp-0x34]
jmp G_M510_IG36
;; size=8 bbWeight=1 PerfScore 3.00
G_M510_IG21:
add r13d, 2
mov eax, ecx
jmp SHORT G_M510_IG19
;; size=8 bbWeight=2 PerfScore 5.00
G_M510_IG22:
mov rcx, qword ptr [rbp-0x30]
lea rdi, [rcx-0x06]
mov rax, rbx
cmp rax, rdi
jae G_M510_IG27
;; size=20 bbWeight=2 PerfScore 6.00
G_M510_IG23:
mov rdx, qword ptr [rax]
mov rsi, 0xD1FFAB1E
test rdx, rsi
je SHORT G_M510_IG26
;; size=18 bbWeight=16 PerfScore 56.00
G_M510_IG24:
mov rsi, 0xD1FFAB1E
and rsi, rdx
mov r8, 0xD1FFAB1E
xor rsi, r8
mov r8, 0xD1FFAB1E
test rsi, r8
je SHORT G_M510_IG25
mov r8, 0xD1FFAB1E
test rsi, r8
je SHORT G_M510_IG25
test esi, -0x10000
je SHORT G_M510_IG25
movzx rsi, si
test esi, esi
jne SHORT G_M510_IG26
;; size=71 bbWeight=8 PerfScore 54.00
G_M510_IG25:
mov rsi, 0xD1FFAB1E
and rdx, rsi
mov rsi, 0xD1FFAB1E
cmp rdx, rsi
jne SHORT G_M510_IG27
;; size=28 bbWeight=8 PerfScore 16.00
G_M510_IG26:
add rax, 8
cmp rax, rdi
jb SHORT G_M510_IG23
;; size=9 bbWeight=16 PerfScore 24.00
G_M510_IG27:
mov rbx, rax
cmp rbx, rcx
jae G_M510_IG12
jmp G_M510_IG18
;; size=17 bbWeight=2 PerfScore 7.00
G_M510_IG28:
mov eax, dword ptr [rbp-0x44]
mov ecx, dword ptr [rbp-0x34]
test ecx, ecx
jne G_M510_IG06
add r13d, -2
mov rdx, gword ptr [rbp-0x50]
test rdx, rdx
mov gword ptr [rbp-0x50], rdx
jne SHORT G_M510_IG29
test r15, r15
je SHORT G_M510_IG30
mov dword ptr [rbp-0x44], eax
mov dword ptr [rbp-0x34], ecx
mov rdi, r15
mov rdx, 0xD1FFAB1E ; code for System.Text.Encoder:get_FallbackBuffer():System.Text.EncoderFallbackBuffer:this
call [rdx]System.Text.Encoder:get_FallbackBuffer():System.Text.EncoderFallbackBuffer:this
mov rdx, rax
jmp SHORT G_M510_IG31
;; size=62 bbWeight=2 PerfScore 31.50
G_M510_IG29:
mov dword ptr [rbp-0x34], ecx
jmp SHORT G_M510_IG32
;; size=5 bbWeight=1 PerfScore 3.00
G_M510_IG30:
mov dword ptr [rbp-0x44], eax
mov dword ptr [rbp-0x34], ecx
mov rdi, gword ptr [r14+0x10]
mov rdx, qword ptr [rdi]
mov rdx, qword ptr [rdx+0x40]
call [rdx+0x20]System.Text.EncoderFallback:CreateFallbackBuffer():System.Text.EncoderFallbackBuffer:this
mov rdx, rax
;; size=23 bbWeight=2 PerfScore 22.50
G_M510_IG31:
mov rax, rdx
mov qword ptr [rax+0x18], r12
mov rcx, qword ptr [rbp-0x30]
mov qword ptr [rax+0x20], rcx
mov gword ptr [rbp-0x50], rax
lea rdi, bword ptr [rax+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rax, gword ptr [rbp-0x50]
mov word ptr [rax+0x30], 0
mov byte ptr [rax+0x32], 0
xor edx, edx
mov gword ptr [rbp-0x50], rax
mov dword ptr [rax+0x28], edx
mov eax, dword ptr [rbp-0x44]
;; size=57 bbWeight=2 PerfScore 24.50
G_M510_IG32:
mov qword ptr [rbp-0x40], rbx
lea rdx, [rbp-0x40]
mov rdi, gword ptr [rbp-0x50]
mov esi, eax
- mov gword ptr [rbp-0x50], 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
+ cmp dword ptr [rdi], edi
+ call [rax]System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this
mov rbx, qword ptr [rbp-0x40]
mov rax, gword ptr [rbp-0x50]
jmp G_M510_IG07
- ;; size=41 bbWeight=2 PerfScore 29.50
+ ;; size=41 bbWeight=2 PerfScore 26.00
G_M510_IG33:
mov dword ptr [rbp-0x34], eax
mov rax, gword ptr [rbp-0x50]
jmp G_M510_IG07
;; size=12 bbWeight=2 PerfScore 8.00
G_M510_IG34:
mov rdi, gword ptr [r14+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_M510_IG35:
mov qword ptr [rax+0x18], r12
mov rcx, qword ptr [rbp-0x30]
mov qword ptr [rax+0x20], rcx
mov gword ptr [rbp-0x50], rax
lea rdi, bword ptr [rax+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rax, gword ptr [rbp-0x50]
mov word ptr [rax+0x30], 0
mov byte ptr [rax+0x32], 0
xor edx, edx
mov gword ptr [rbp-0x50], rax
mov dword ptr [rax+0x28], edx
mov ecx, dword ptr [rbp-0x34]
;; size=54 bbWeight=2 PerfScore 24.00
G_M510_IG36:
mov qword ptr [rbp-0x40], rbx
lea rdx, [rbp-0x40]
mov rdi, gword ptr [rbp-0x50]
mov esi, ecx
- mov gword ptr [rbp-0x50], 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
+ cmp dword ptr [rdi], edi
+ call [rax]System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this
mov rbx, qword ptr [rbp-0x40]
jmp G_M510_IG06
- ;; size=37 bbWeight=2 PerfScore 27.50
+ ;; size=37 bbWeight=2 PerfScore 24.00
G_M510_IG37:
cmp dword ptr [rbp-0x34], 0
mov rax, gword ptr [rbp-0x50]
jle G_M510_IG07
mov ecx, dword ptr [rbp-0x34]
add rbx, -2
test rax, rax
jne SHORT G_M510_IG41
;; size=26 bbWeight=16 PerfScore 104.00
G_M510_IG38:
test r15, r15
je SHORT G_M510_IG39
mov dword ptr [rbp-0x34], ecx
mov rdi, r15
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 SHORT G_M510_IG40
;; size=25 bbWeight=8 PerfScore 62.00
G_M510_IG39:
mov dword ptr [rbp-0x34], ecx
mov rdi, gword ptr [r14+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_M510_IG40:
mov qword ptr [rax+0x18], r12
mov rcx, qword ptr [rbp-0x30]
mov qword ptr [rax+0x20], rcx
mov gword ptr [rbp-0x50], rax
lea rdi, bword ptr [rax+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rax, gword ptr [rbp-0x50]
mov word ptr [rax+0x30], 0
mov byte ptr [rax+0x32], 0
xor edx, edx
mov dword ptr [rax+0x28], edx
mov ecx, dword ptr [rbp-0x34]
;; size=50 bbWeight=8 PerfScore 88.00
G_M510_IG41:
mov qword ptr [rbp-0x40], rbx
lea rdx, [rbp-0x40]
+ mov gword ptr [rbp-0x50], rax
mov rdi, rax
mov esi, ecx
- mov gword ptr [rbp-0x50], 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-0x40]
add r13d, -2
jmp G_M510_IG06
- ;; size=40 bbWeight=16 PerfScore 212.00
+ ;; size=44 bbWeight=16 PerfScore 200.00
G_M510_IG42:
mov eax, r13d
;; size=3 bbWeight=1 PerfScore 0.25
G_M510_IG43:
add rsp, 40
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M510_IG44:
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
;; size=14 bbWeight=2 PerfScore 18.00
G_M510_IG45:
mov qword ptr [rax+0x18], r12
mov rcx, qword ptr [rbp-0x30]
mov qword ptr [rax+0x20], rcx
mov gword ptr [rbp-0x50], rax
lea rdi, bword ptr [rax+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rax, gword ptr [rbp-0x50]
mov word ptr [rax+0x30], 0
mov byte ptr [rax+0x32], 0
xor edx, edx
mov dword ptr [rax+0x28], edx
mov rsi, rax
;; size=50 bbWeight=2 PerfScore 20.50
G_M510_IG46:
mov qword ptr [rbp-0x40], rbx
lea rdx, [rbp-0x40]
mov gword ptr [rbp-0x50], rsi
mov rdi, rsi
mov esi, dword ptr [rbp-0x34]
- mov rbx, gword ptr [rbp-0x50]
- mov rcx, qword ptr [rbx]
- mov rcx, qword ptr [rcx+0x48]
- call [rcx+0x10]System.Text.EncoderFallbackBuffer:InternalFallback(ushort,byref):ubyte:this
- mov rdi, qword ptr [rbp-0x40]
+ 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-0x40]
xor esi, esi
mov dword ptr [rbp-0x34], esi
- mov edx, 1
- mov dword ptr [rbp-0x38], edx
- mov rax, rbx
- mov rbx, rdi
+ mov edi, 1
+ mov dword ptr [rbp-0x38], edi
+ mov rax, gword ptr [rbp-0x50]
jmp G_M510_IG07
- ;; size=60 bbWeight=4 PerfScore 71.00
+ ;; size=58 bbWeight=4 PerfScore 66.00
G_M510_IG47:
mov rdi, 0xD1FFAB1E ; System.Char
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_RecursiveFallback():System.String
call [rax]System.SR:get_Argument_RecursiveFallback():System.String
mov r15, rax
mov ebx, dword ptr [rbp-0x34]
mov word ptr [r14+0x08], bx
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rsi, r14
mov rdi, r15
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=130 bbWeight=0 PerfScore 0.00
G_M510_IG48:
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, r14
mov rax, qword ptr [r14]
mov rax, qword ptr [rax+0x48]
call [rax]System.Text.Encoding:get_EncodingName():System.String:this
mov r14, rax
mov rdi, gword ptr [r15+0x08]
test rdi, rdi
je SHORT G_M510_IG49
call System.Object:GetType():System.Type:this
mov r15, rax
jmp SHORT G_M510_IG50
;; size=49 bbWeight=0 PerfScore 0.00
G_M510_IG49:
xor r15, r15
;; size=3 bbWeight=0 PerfScore 0.00
G_M510_IG50:
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=66 bbWeight=0 PerfScore 0.00
G_M510_IG51:
mov rdi, 0xD1FFAB1E ; System.ArgumentOutOfRangeException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov edi, 975
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov r15, 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, r15
mov rdi, rbx
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, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1593, prolog size 28, PerfScore 1510.62, instruction count 419, allocated bytes for code 1597 (MethodHash=a4d4fe01) for method System.Text.UnicodeEncoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
+; Total bytes of code 1595, prolog size 28, PerfScore 1486.62, instruction count 415, allocated bytes for code 1599 (MethodHash=a4d4fe01) for method System.Text.UnicodeEncoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this (FullOpts)